文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

达梦数据库获取SQL实际执行计划方法详细介绍

2024-04-02 19:55

关注

环境说明:

操作系统:银河麒麟V10

数据库:DM8

相关关键字:DM数据库、SQL实际执行计划

一、set autotrace trace

disql下执行set autotrace trace开启AUTOTRACE功能,执行SQL语句,并打印实际的执行计划。

SQL> set autotrace trace
SQL> select a.employee_name, b.department_name from dmtest.t_emp a join dmtest.t_dept b on a.department_id = b.department_id and b.department_id=102;

达梦数据库获取SQL实际执行计划方法详细介绍

二、v$cachepln中获取执行计划

v$cachepln中保存了SQL缓冲区中的执行计划信息,在ini参数USE_PLN_POOL !=0时才统计。根据v$cachepln中的cache_item可以获取实际执行计划信息:

SQL> select cache_item, sqlstr from v$cachepln where sqlstr like 'select a.employee_name, b.department_name from dmtest.t_emp a join dmtest.t_dept b on a.department_id = b.department_id and b.department_id=102%'; 
SQL> alter session set events 'immediate trace name plndump level 140244262459496, dump_file ''/opt/dm/sqlplntest.log''';

达梦数据库获取SQL实际执行计划方法详细介绍

查看dump的执行计划信息:

达梦数据库获取SQL实际执行计划方法详细介绍

三、ET系统函数

ET函数统计对应执行ID的所有操作符的执行时间。使用ET函数需设置INI参数ENABLE_MONITOR=1、MONITOR_TIME=1和MONITOR_SQL_EXEC=1。

查看参数信息:

SQL>select name, type, value from v$parameter t where name in('ENABLE_MONITOR','MONITOR_SQL_EXEC','MONITOR_TIME');
行号  NAME             TYPE    VALUE
---- ------ ---------------- ------- -----
1 ENABLE_MONITOR   SYS     1
2 MONITOR_TIME     SYS     1
3 MONITOR_SQL_EXEC SESSION 0

达梦数据库获取SQL实际执行计划方法详细介绍

设置当前会话MONITOR_SQL_EXEC参数为1,并执行sql语句:

SQL> alter session set 'MONITOR_SQL_EXEC'=1;

达梦数据库获取SQL实际执行计划方法详细介绍

使用ET获取上述执行号为1124的SQL语句的执行计划和执行时间:

达梦数据库获取SQL实际执行计划方法详细介绍

四、dbms_sqltune系统包

DBMS_SQLTUNE系统包兼容oracle的DBMS_SQLTUNE包的部分功能,提供一系列对实时SQL监控的方法。

当SQL监控功能开启后,DBMS_SQLTUNE包可以实时监控SQL执行过程中的信息,包括:执行时间、执行代价、执行用户、统计信息等情况。使用DBMS_SQLTUNE也需要将DM.INI参数ENABLE_MONITOR、MONITOR_TIME、MONITOR_SQL_EXEC设置为1。

使用DBMS_SQLTUNE.REPORT_SQL_MONITOR方法可以查看上述执行号为1124的执行计划信息。

SQL> set long 100000
SQL> SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_EXEC_ID=>1124);

如下图所示,可以看到此方法获取的执行计划比ET函数更详细。

达梦数据库获取SQL实际执行计划方法详细介绍

达梦数据库获取SQL实际执行计划方法详细介绍

五、说明

1、set autotrace trace和v$cachepln不需要开启其他额外参数,默认就可以使用该方法获取sql语句的执行计划,不同的是set autotrace trace需要等待SQL语句执行完成才会打印执行计划;而通过v$cachepln在语句解析生成执行计划后就可以查询该SQL的执行计划;

2、使用ET函数和dbms_sqltune系统包也需要SQL语句执行完成,并且需要保证ENABLE_MONITOR、MONITOR_TIME、MONITOR_SQL_EXEC三个参数为开启状态才能查看对应SQL的实际执行计划信息,其中,dbms_sqltune执行计划更详细。

到此这篇关于达梦数据库获取SQL实际执行计划方法详细介绍的文章就介绍到这了,更多相关获取SQL实际执行计划内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯