如何查看sql mysql查看执行计划划的历史变更

Oracle如何查看sql的真实执行计划_数据库技术_Linux公社-Linux系统门户网站
你好,游客
Oracle如何查看sql的真实执行计划
来源:Linux社区&
作者:wangzizhzxy
知识普及:
1 平常我们用explan plan for,set autotrace,utlxplan等方式查看执行计划都是optimizer模拟生成的执行计划,并不完全符合内部对sql语句的执行路径。
2 v$sqlarea中放置的父游标,放置sql的sql_id和address
3 v$sql中对应v$sqlarea中的sql的子游标,address和child_number代表唯一的子游标
查询sql在数据库中实际的sql执行计划方法:
1 set autotrace on
如果语句返回的行很多,那么结果会非常庞大,在sqlplus里边是一个困难的选择。
set autotrace traceonly& --并不能每次显示正确的执行计划,造成对sql优化的误导。
2 查询v$sql_plan是真实执行路径,但阅读比较困难。
3 使用如下语句可以查询sql的真实执行路径,并且格式化执行路径输出
set linesize 400
set pagesize 60
SELECT * FROM TABLE (SELECT DBMS_XPLAN.DISPLAY_CURSOR('a8tumy29tf0za','0') from dual);
--第一个为sql_id
--第二个为child_number
更多Oracle相关信息见 专题页面
相关资讯 & & &
& (06月01日)
& (05/06/:43)
& (05/09/:25)
& (09/26/:59)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款后使用快捷导航没有帐号?
查看: 4001|回复: 9
PL/SQL Developer的执行计划如何查看统计信息?
金牌会员, 积分 1190, 距离下一级还需 1810 积分
论坛徽章:11
PL/ Developer的执行计划如何查看统计信息?
快照11.png (58.46 KB)
19:38 上传
按F5 只有执行计划,没有统计信息,如红框如何在PL/SQL Developer显示
新手上路, 积分 3, 距离下一级还需 47 积分
论坛徽章:1
高级会员, 积分 598, 距离下一级还需 402 积分
论坛徽章:8
楼主这里找找
TOOLS-&Preferences-&Plan Windows,里面有一些选项可以勾选。
金牌会员, 积分 2117, 距离下一级还需 883 积分
论坛徽章:5
按F5键,就是执行计划
中级会员, 积分 414, 距离下一级还需 86 积分
论坛徽章:3
应该没有这个功能吧
高级会员, 积分 873, 距离下一级还需 127 积分
论坛徽章:2
论坛徽章:15
只能在sqlplus中看
注册会员, 积分 142, 距离下一级还需 58 积分
论坛徽章:9
每次想看都得粘到sqlplus里面看,但是sqlplus里面的执行计划又不好看。于是就变成了:看一眼sqlDeveloper,看一眼sqlplus。。。。。
论坛徽章:15
看执行 计划,习惯就好
扫一扫加入本版微信群查看:1940|回复:8
小微企业IT帮
有很多方法获得执行计划,使用哪种根据情况决定。通常你可以使用SQL Server Management Studio来获得执行计划,然而如果因为某些原因你不能在SQL Server Management Studio中运行查询,那么你会发现SQL Server Profiler或者探测执行计划缓存会对获得执行计划有帮助。
小微企业IT帮
方法1 – 使用SQL Server Management Studio
SQL Server有很多简单属性让我们非常容易捕获执行计划,简单来说确保“Include Actual Execution Plan”菜单(在“Query”菜单下可被找到)被选中,并运行查询。
如果你尝试对存储过程中的语句获得执行计划,那么你应该执行该存储过程,像这样:复制内容到剪贴板代码:exec p_Example 42当查询执行完成,你会看到一个额外的“Execution plan”标签页出现在结果面板。如果你运行了很多语句,你会在这个标签页看到很多执行计划。
从这里你可以在SQL Server Management Studio里检查到执行计划,或者在面板上右击并选择“Save Execution Plan As…”保存执行计划到一个XML格式文件。
(31.43 KB)
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
小微企业IT帮
方法2 – 使用SHOWPLAN选项
该方法非常类似于方法1(事实上这是SQL Server Management Studio的内部实现),然而我包含它用于完成或者如果你没有SQL Server Management Studio可用。
在运行你的查询之前,运行以下语句之一。语句必须是这批语句中的唯一一个,例如,你不能在同时执行另一个语句:复制内容到剪贴板代码:SET SHOWPLAN_TEXT ON
SET SHOWPLAN_ALL ON
SET SHOWPLAN_XML ON
SET STATISTICS PROFILE ON
SET STATISTICS XML ON -- The is the recommended option to use这些是连接级别的选项,因此你只需对每个连接运行一次。这么说所有运行的语句完成后,将会有一个包含以你期望的格式的执行计划的额外结果集 – 像平常一样运行你的查询就会看到这个面板。
一旦执行完后,你可以使用如下语句关闭这个选项:复制内容到剪贴板代码:SET &&option&& OFF比较执行计划格式
除非你有非常强烈的偏好,我的推荐是使用STATISTICS XML选项。这个选项等于SQL Server Management Studio中的“Include Actual Execution Plan”选项,并以最方便的格式提供了最丰富的信息。
. SHOWPLAN_TEXT – 显示了一个基本的基于文本的预估执行计划,而不必执行查询。
. SHOWPLAN_ALL – 显示带有消耗预估值的基于文本的预估执行计划,而不必执行查询。
. SHOWPLAN_XML – 显示带有消耗预估值的基于XML的预估执行计划,而不必执行查询。等于在SQL Server Management Studio中的“Display Estimated Execution Plan…”选项。
. STATISTICS PROFILE – 执行查询并显示基于文本的实际执行计划。
. STATISTICS XML – 执行查询并显示基于XML的实际执行计划。等于在SQL Server Management Studio中的“Include Actual Execution Plan”选项。
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
小微企业IT帮
方法3 – 使用SQL Server Profiler
如果你不能直接运行查询(或者当你直接执行它时你的查询不能缓慢运行 – 记住我们想要一个性能不佳的查询的执行计划),那么你可以使用SQL Server Profiler跟踪来捕获执行计划。想法是运行查询时,捕获“Showplan”事件的跟踪正在运行。
注意在生产环境上根据负载情况使用该方法,显然你应该小心使用。SQL Server Profiling架构被设计为最小化数据库影响,但是并不意味着没有任何性能影响。如果数据在高负载下使用,在你的跟踪里过滤和识别正确的执行计划也有问题。你显然应该与DBA一起看看他们是否愿意你在珍贵的数据库上做这些!
& &1. 打开SQL Server Profiler并创建一个新的跟踪,连接到你想记录跟踪的数据库上。
& &2. 在“Event Selection”标签下选择“Show all events”,选择“Performance”-&“Showplan”行并运行跟踪。
& &3. 当跟踪运行时,你需要去做的是运行该慢查询。
& &4. 等待查询完成并停止跟踪。
& &5. 为了保存跟踪,在SQL Server Profiler中右键点击XML格式执行计划,并选择“Extract event data..”来以XML格式保存执行计划。
你获得的执行计划等于在SQL Server Management Studio中选择“Include Actual Execution Plan”选项。
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
小微企业IT帮
方法4 – 探测查询缓存
如果你不能直接运行查询,并且你也不能捕获Profiler跟踪,你仍然可以通过探测SQL查询的执行计划缓存获得预估的执行计划。
我们通过查询SQL Server DMV探测执行计划缓存。以下是一个基本的查询,用于列出所有的查询计划(以XML格式)以及它们的SQL文本。对大多数数据库你也需要添加额外的过滤从句,过滤出你感兴趣的执行计划。复制内容到剪贴板代码:SELECT UseCounts, Cacheobjtype, Objtype, TEXT, query_plan
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
CROSS APPLY sys.dm_exec_query_plan(plan_handle)执行该查询并点击XML格式的执行计划,来在新窗口打开该这行计划 – 右键点击并选择“Save execution plan as …”以XML格式保存执行计划到文件。
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
小微企业IT帮
因为有很多因素(从表和索引结构到数据存储和表统计信息)促使你应该总是从你感兴趣的(通常是经历一个性能问题的数据库)数据库获得执行计划。
你不能捕获加密存储过程的执行计划。
“actual”VS“estimated”执行计划
实际执行计划是SQL Server实际运行查询时的执行计划,而预估执行计划是SQL Server在没有执行查询时预估出要做什么。尽管逻辑上相等,实际执行计划更有用应该它包含了当查询执行时实际发生了什么的额外的细节和统计信息。当在SQL Server预估值为OFF的地方诊断问题的时候,它是必须的(例如当统计信息过期时)。
. 重新回顾预估和实际执行计划
如果解释一个查询的执行计划?
该主题值得写一本书《SQL Server Execution Plan》。(译者注:该书已出第2版)
. 执行计划基础
. SHOWPLAN许可和Transact-SQL批处理
. SQL Server 2008 – 使用查询哈希和查询执行计划哈希
. 分析SQL Server执行计划缓存
SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
论坛首席搬砖工程师
51CTO信息安全交流群: 入群请说明论坛ID
SQL Server MCITP, MVP, MCT, DBA
高级工程师
好文章。。。

我要回帖

更多关于 mysql查看执行计划 的文章

 

随机推荐