首頁 > 軟體

達夢資料庫獲取SQL實際執行計劃方法詳細介紹

2022-10-12 14:02:03

環境說明:

作業系統:銀河麒麟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;

二、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''';

檢視dump的執行計劃資訊:

三、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

設定當前對談MONITOR_SQL_EXEC引數為1,並執行sql語句:

SQL> alter session set 'MONITOR_SQL_EXEC'=1;

使用ET獲取上述執行號為1124的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函數更詳細。

五、說明

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實際執行計劃內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com