控制執行計劃之-SPM BASELINE(二)
1) 自動捕獲
可以在session和system級別設定optimizer_capture_sql_plan_baselines引數來決定是否開啟自動捕獲baseline。預設為false,不開啟。
test@DLSP>alter session set optimizer_capture_sql_plan_baselines = true;
Session altered.
test@DLSP>select count(*) from test;
COUNT(*) ---------- 50000
test@DLSP>alter session set optimizer_capture_sql_plan_baselines = false;
Session altered.
test@DLSP>select sql_handle, plan_name, origin, accepted,fixed 2 from dba_sql_plan_baselines 3 where sql_text like '%count(*)%';
SQL_HANDLE PLAN_NAME ORIGIN ACCEPT FIXED -------------------- -------------------------------- --------------- ------ ---- SQL_5cc64969ffe36537 SQL_PLAN_5tjk9d7zy6t9r6b581ab9 AUTO-CAPTURE YES NO
test@DLSP>select count(*) from test;
COUNT(*) ---------- 50000
test@DLSP>select * from table(dbms_xplan.display_cursor);
PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------- SQL_ID 7b2twsn8vgfsc, child number 1 ------------------------------------- select count(*) from test
Plan hash value: 1950795681
------------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | ------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | 51 (100)| | | 1 | SORT AGGREGATE | | 1 | | | | 2 | TABLE ACCESS FULL| TEST | 50000 | 51 (2)| 00:00:01 | -------------------------------------------------------------------
Note ----- - SQL plan baseline SQL_PLAN_5tjk9d7zy6t9r6b581ab9 used for this statement |
開啟自動捕獲後,執行過的SQL已經生成了baseline,執行SQL後,Note部分的顯示也說明了這一點。
2) 從SQL調優集載入
SQL調優集是符合一系列約束條件的特定SQL的集合,DBA可以指定建立SQL調優集的條件,如符合邏輯讀大於多少的、執行次數大於多少的SQL被建立進SQL調優集,如下的程式碼建立了一個SQL調優集,條件是:由test這個schema解析、邏輯讀大於1000,執行次數大於100的SQL。可以透過DBA_SQLSET檢視來檢視建立的SQL調優集的相關資訊,如此SQL調優集包含多少SQL。可以透過檢視dba_sqlset_statements來檢視SQL調優集包含的具體的SQL資訊。
sys@DLSP>DECLARE 2 cur DBMS_SQLTUNE.SQLSET_CURSOR; 3 BEGIN 4 DBMS_SQLTUNE.CREATE_SQLSET('test'); 5 OPEN cur FOR 6 SELECT VALUE(P) 7 FROM table(DBMS_SQLTUNE.SELECT_CURSOR_CACHE('PARSING_SCHEMA_NAME=''test'' and force_matching_signature<>0 and BUFFER_GETS>1000 and EXECUTIONS>100', 8 NULL, 9 NULL, 10 NULL, 11 NULL, 12 1, 13 NULL, 14 'ALL')) P; 15 DBMS_SQLTUNE.LOAD_SQLSET(sqlset_name => 'test', 16 populate_cursor => cur); 17 END; 18 /
PL/SQL procedure successfully completed.
sys@BUSS>SELECT NAME,OWNER,CREATED,STATEMENT_COUNT FROM DBA_SQLSET where name='test';
NAME OWNER CREATED STATEMENT_COUNT ---------- ---------- ------------------- --------------- test SYS 2014-07-29 09:57:25 341
sys@BUSS>select sql_id, substr(sql_text,1, 30) text 2 from dba_sqlset_statements 3 where sqlset_name = 'test' 4 order by sql_id;
SQL_ID TEXT -------------------------- ------------------------------------------- 00c1xhp5bncs3 select id as id, 省略
|
調優集建立完成後,我們就可以透過dbms_spm.load_plans_from_sqlset函式來載入建立的SQL調優集,調優集中的SQL都會被建立baseline。
sys@BUSS> variable a number; sys@BUSS> exec :a := dbms_spm.load_plans_from_sqlset(sqlset_name => 'test');
PL/SQL procedure successfully completed.
sys@BUSS>select count(*) from dba_sql_plan_baselines;
COUNT(*) ---------- 330 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-1241478/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【SPM】Oracle計劃管理器SPM介紹及用例Oracle
- 十六、Mysql之Explain執行計劃MySqlAI
- 獲取執行計劃之Autotrace
- 執行計劃-1:獲取執行計劃
- mysql調優之——執行計劃explainMySqlAI
- MongoDb學習之Explain執行計劃MongoDBAI
- Oracle調優之看懂Oracle執行計劃Oracle
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- 執行緒控制之休眠執行緒執行緒
- MySQL執行計劃MySql
- SYBASE執行計劃
- MySQL 執行計劃MySql
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- MySQL執行計劃解析MySql
- mysql explain 執行計劃MySqlAI
- explain執行計劃分析AI
- mysql執行計劃explainMySqlAI
- oracle 固定執行計劃Oracle
- Oracle sql執行計劃OracleSQL
- 執行計劃執行步驟原則
- .Oracle固定執行計劃之SQL PROFILE概要檔案OracleSQL
- Oceanbase 和 TiDB 粗淺對比之 - 執行計劃TiDB
- 【PG執行計劃】Postgresql資料庫執行計劃統計資訊簡述SQL資料庫
- Java併發程式設計之執行緒篇之執行緒簡介(二)Java程式設計執行緒
- mongodb執行計劃解釋MongoDB
- 檢視 OceanBase 執行計劃
- MySQL執行計劃解析(四)MySql
- 讀懂MySQL執行計劃MySql
- Explain執行計劃詳解AI
- PostgreSQL執行計劃變化SQL
- explain 查詢執行計劃AI
- 二. 執行緒管理之執行緒池執行緒
- 如何縮小專案計劃與執行之間的差距?
- [20190111]執行計劃bitmap and.txt
- mysql explain 執行計劃詳解MySqlAI
- SqlServer的執行計劃如何分析?SQLServer
- 柱狀圖與執行計劃
- DB2執行計劃分析DB2
- Calcite執行計劃最佳化