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
- [20210114]toad檢視真實執行計劃問題.txt
- [20210205]toad檢視真實執行計劃問題3.txt
- 如何檢視SQL的執行計劃SQL
- 檢視 OceanBase 執行計劃
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- Oracle執行計劃Explain Plan 如何使用OracleAI
- 微課sql最佳化(11) 、如何檢視執行計劃SQL
- oracle 固定執行計劃Oracle
- Oracle sql執行計劃OracleSQL
- [20181120]toad看真實的執行計劃.txt
- 執行計劃-2:檢視更多的資訊
- 檢視oracle資料庫真實大小Oracle資料庫
- 檢視一個正在執行的sql的執行計劃(explain for connection processlist_id)SQLAI
- 【SQL_PLAN】Oracle 透過檢視sql_plan 格式化執行計劃SQLOracle
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- Oracle“並行執行”——監控檢視Oracle並行
- 使用set autotrace on 檢視資料庫執行計劃資料庫
- 知識篇 | ORACLE 如何執行計劃繫結Oracle
- Oracle如何手動重新整理執行計劃Oracle
- Oracle調優之看懂Oracle執行計劃Oracle
- 檢視執行計劃出現ORA-22992錯誤
- 檢視SQL執行計劃的幾種常用方法YQSQL
- 達夢資料庫SQL執行計劃檢視方法資料庫SQL
- Oracle-繫結執行計劃Oracle
- Oracle 變數窺視引起執行計劃異常故障分析Oracle變數
- oracle使用outline固定執行計劃事例Oracle
- 達夢資料庫獲取SQL真實的執行計劃資料庫SQL
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- Oracle緊急固定執行計劃之手段Oracle
- 執行計劃-1:獲取執行計劃
- Oracle 通過註釋改變執行計劃Oracle
- SqlServer的執行計劃如何分析?SQLServer
- 從真實案例出發,全方位解讀 NebulaGraph 中的執行計劃
- Oracle 9i變數窺視引起執行計劃異常故障報告Oracle變數
- .Oracle固定執行計劃之SQL PROFILE概要檔案OracleSQL
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle