達夢數(shù)據(jù)庫獲取SQL實際執(zhí)行計劃方法詳細介紹
環(huán)境說明:
操作系統(tǒng):銀河麒麟V10
數(shù)據(jù)庫:DM8
相關(guān)關(guān)鍵字:DM數(shù)據(jù)庫、SQL實際執(zhí)行計劃
一、set autotrace trace
disql下執(zhí)行set autotrace trace開啟AUTOTRACE功能,執(zhí)行SQL語句,并打印實際的執(zhí)行計劃。
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中獲取執(zhí)行計劃
v$cachepln中保存了SQL緩沖區(qū)中的執(zhí)行計劃信息,在ini參數(shù)USE_PLN_POOL !=0時才統(tǒng)計。根據(jù)v$cachepln中的cache_item可以獲取實際執(zhí)行計劃信息:
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的執(zhí)行計劃信息:
三、ET系統(tǒng)函數(shù)
ET函數(shù)統(tǒng)計對應(yīng)執(zhí)行ID的所有操作符的執(zhí)行時間。使用ET函數(shù)需設(shè)置INI參數(shù)ENABLE_MONITOR=1、MONITOR_TIME=1和MONITOR_SQL_EXEC=1。
查看參數(shù)信息:
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
設(shè)置當(dāng)前會話MONITOR_SQL_EXEC參數(shù)為1,并執(zhí)行sql語句:
SQL> alter session set 'MONITOR_SQL_EXEC'=1;
使用ET獲取上述執(zhí)行號為1124的SQL語句的執(zhí)行計劃和執(zhí)行時間:
四、dbms_sqltune系統(tǒng)包
DBMS_SQLTUNE系統(tǒng)包兼容Oracle的DBMS_SQLTUNE包的部分功能,提供一系列對實時SQL監(jiān)控的方法。
當(dāng)SQL監(jiān)控功能開啟后,DBMS_SQLTUNE包可以實時監(jiān)控SQL執(zhí)行過程中的信息,包括:執(zhí)行時間、執(zhí)行代價、執(zhí)行用戶、統(tǒng)計信息等情況。使用DBMS_SQLTUNE也需要將DM.INI參數(shù)ENABLE_MONITOR、MONITOR_TIME、MONITOR_SQL_EXEC設(shè)置為1。
使用DBMS_SQLTUNE.REPORT_SQL_MONITOR方法可以查看上述執(zhí)行號為1124的執(zhí)行計劃信息。
SQL> set long 100000 SQL> SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(SQL_EXEC_ID=>1124);
如下圖所示,可以看到此方法獲取的執(zhí)行計劃比ET函數(shù)更詳細。
五、說明
1、set autotrace trace和v$cachepln不需要開啟其他額外參數(shù),默認就可以使用該方法獲取sql語句的執(zhí)行計劃,不同的是set autotrace trace需要等待SQL語句執(zhí)行完成才會打印執(zhí)行計劃;而通過v$cachepln在語句解析生成執(zhí)行計劃后就可以查詢該SQL的執(zhí)行計劃;
2、使用ET函數(shù)和dbms_sqltune系統(tǒng)包也需要SQL語句執(zhí)行完成,并且需要保證ENABLE_MONITOR、MONITOR_TIME、MONITOR_SQL_EXEC三個參數(shù)為開啟狀態(tài)才能查看對應(yīng)SQL的實際執(zhí)行計劃信息,其中,dbms_sqltune執(zhí)行計劃更詳細。
到此這篇關(guān)于達夢數(shù)據(jù)庫獲取SQL實際執(zhí)行計劃方法詳細介紹的文章就介紹到這了,更多相關(guān)獲取SQL實際執(zhí)行計劃內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows系統(tǒng)下MySQL無法啟動的萬能解決方法
這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下MySQL無法啟動的萬能解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12MySQL存儲引擎中的MyISAM和InnoDB區(qū)別詳解
這篇文章主要介紹了MySQL存儲引擎中的MyISAM和InnoDB區(qū)別詳解,本文總結(jié)了MyISAM與InnoDB的11點區(qū)別,需要的朋友可以參考下2015-03-03mysql xtrabackup 備份恢復(fù)實現(xiàn)分享
Xtrabackup是由percona提供的mysql數(shù)據(jù)庫備份工具,據(jù)官方介紹,這也是世界上惟一一款開源的能夠?qū)nnodb和xtradb數(shù)據(jù)庫進行熱備的工具2012-11-11Mysql數(shù)據(jù)庫自增id、uuid與雪花id詳解
在mysql中設(shè)計表的時候,mysql官方推薦不要使用uuid或者不連續(xù)不重復(fù)的雪花id(long形且唯一),而是推薦連續(xù)自增的主鍵id,這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫自增id、uuid與雪花id的相關(guān)資料,需要的朋友可以參考下2023-02-02