Oracle如何檢視真實執行計劃(一)
大家可能之前都瞭解過執行計劃的檢視方式,比如explain plan for,set autot ...
但是其實這些方式檢視的執行計劃並非真實執行計劃,而是oracle根據統計資訊等資訊透過CBO計算出來的執行計劃,
都來自於PLAN_TABLE,這是一個會話級的臨時表,其儲存的執行計劃往往與真實執行計劃相差甚遠。
本文介紹如何檢視執行SQL的真實執行計劃。
方法一:使用statistics_level = all的方法檢視
1、更改系統統計收集引數為all,session級別即可,
注意:all是一個全面收集,包括 OS以及sql執行路徑方面的一些統計資訊,相對來說比較耗費資源,因此千萬不能設定全域性為all,會話級別使用即可。
SQL> alter session set statistics_level = all; Session altered.
2、執行待檢視執行計劃的SQL語句
SQL> select a.email from hr.employees a where rownum<=5; EMAIL ------------------------- ABANDA ABULL ACABRIO AERRAZUR AFRIPP
3、執行如下命令檢視真實執行計劃
SQL> select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ SQL_ID aw1d4an00b4za, child number 0 ------------------------------------- select a.email from hr.employees a where rownum<=5 Plan hash value: 2484301839 ------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | 5 |00:00:00.01 | 2 | |* 1 | COUNT STOPKEY | | 1 | | 5 |00:00:00.01 | 2 | | 2 | INDEX FULL SCAN| EMP_EMAIL_UK | 1 | 5 | 5 |00:00:00.01 | 2 | ------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(ROWNUM<=5) 19 rows selected.
方法二:新增hint提示符方式檢視
1、在執行SQL中新增加/*+ gather_plan_statistics */ hint,例如:
SQL> select /*+ gather_plan_statistics */ a.email from hr.employees a where rownum<=5; EMAIL ------------------------- ABANDA ABULL ACABRIO AERRAZUR AFRIPP
2、使用如下命令檢視SQL語句真實執行計劃
SQL> select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ SQL_ID 6qu4asp22hx3p, child number 0 ------------------------------------- select /*+ gather_plan_statistics */ a.email from hr.employees a where rownum<=5 Plan hash value: 2484301839 ------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | 5 |00:00:00.01 | 2 | |* 1 | COUNT STOPKEY | | 1 | | 5 |00:00:00.01 | 2 | | 2 | INDEX FULL SCAN| EMP_EMAIL_UK | 1 | 5 | 5 |00:00:00.01 | 2 | ------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(ROWNUM<=5) 20 rows selected.
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70013625/viewspace-3012545/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle如何檢視執行計劃Oracle
- Oracle檢視執行計劃(一)Oracle
- 檢視ORACLE的實際執行計劃Oracle
- 檢視執行計劃(一)
- Oracle檢視執行計劃(五)Oracle
- Oracle檢視執行計劃(六)Oracle
- Oracle檢視執行計劃(二)Oracle
- Oracle檢視執行計劃(三)Oracle
- Oracle檢視執行計劃(四)Oracle
- ORACLE執行計劃的檢視Oracle
- 檢視oracle執行計劃 - 轉Oracle
- 在Oracle中,如何得到真實的執行計劃?Oracle
- Oracle檢視執行計劃的命令Oracle
- oracle檢視執行計劃的方法Oracle
- Oracle 檢視SQL的執行計劃OracleSQL
- Oracle檢視執行計劃常用方法Oracle
- 如何檢視SQL的執行計劃SQL
- 檢視執行計劃
- 如何獲取真實的執行計劃
- ORACLE資料庫檢視執行計劃Oracle資料庫
- 【Oracle】如何檢視sql 執行計劃的歷史變更OracleSQL
- Oracle優化——如何檢視語句的準確的執行計劃(explain plan可能不是真實的)Oracle優化AI
- 檢視執行計劃(二)
- 檢視sql執行計劃SQL
- Oracle檢視正在執行的SQL以及執行計劃分析OracleSQL
- 多種方法檢視Oracle SQL執行計劃OracleSQL
- oracle10g 檢視SQL執行計劃OracleSQL
- 如何在oracle10g上檢視sql的執行計劃(不實際執行語句)OracleSQL
- oracle實用sql(15)--檢視SQL執行計劃的順序OracleSQL
- 檢視歷史執行計劃
- 檢視執行計劃的方法
- 檢視 OceanBase 執行計劃
- 檢視Oracle SQL執行計劃方法比較、分析OracleSQL
- oracle dbms_xplan.display_cursor檢視執行計劃Oracle
- SQLPLUS檢視oracle sql執行計劃命令SQLOracle
- 使用10046事件檢視oracle執行計劃事件Oracle
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- Oracle 9i 開啟autotrace on 檢視執行計劃Oracle