oracle spm使用1
生活随笔
收集整理的這篇文章主要介紹了
oracle spm使用1
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
oracle11g new feature SPM
有助于保持sql的語句特性,僅僅同意運行性能提高的運行計劃。
它不同于stored outlines, spm在于穩定sql性能,而store outlines在于凍結sql運行計劃
事列
1.啟用optimizer_cature_sql_plan_baselines 捕獲sql語句
SQL> alter session set optimizer_capture_sql_plan_baselines = true;
Session altered.
SQL> select * from objs where object_id = 2;
no rows selected
SQL> select * from objs where object_id = 2;
no rows selected
SQL> alter session set optimizer_capture_sql_plan_baselines = false;
Session altered.
2.查詢dba_sql_plan_baselines,確定sql的spm狀態
SQL> select plan_name, sql_handle, enabled, accepted, fixed,
? 2 ? ? ? ? ? ? module, sql_text
? 3 ?from dba_sql_plan_baselines;
PLAN_NAME ? ? ? ? ? ? ? ? ? ? ?SQL_HANDLE ? ? ? ? ? ENABLED ? ACCEPTED ?FIXED ? ? MODULE ? ? ? ? ? ? ? SQL_TEXT
------------------------------ -------------------- --------- --------- --------- -------------------- --------------------------------------------------
SQL_PLAN_4pzq3z6xcqkpwd0984253 SQL_4afec3f9bacb4abc YES ? ? ? YES ? ? ? NO ? ? ? ?SQL*Plus ? ? ? ? ? ? select * from objs where object_id = 2
3.添加索引改變環境再執行sql
SQL> alter session set optimizer_capture_sql_plan_baselines = true;
Session altered.
SQL> select * from objs where object_id = 2;
no rows selected
SQL> select * from objs where object_id = 2;
no rows selected
SQL> alter session set optimizer_capture_sql_plan_baselines = false;
Session altered.
4.查詢dba_sql_plan_baselines
SQL> select plan_name, sql_handle, enabled, accepted, fixed, module, sql_text from dba_sql_plan_baselines;
PLAN_NAME ? ? ? ? ? ? ? ? ? ? ?SQL_HANDLE ? ? ? ? ? ENABLED ? ACCEPTED ?FIXED ? ? MODULE ? ? ? ? ? ? ? SQL_TEXT
------------------------------ -------------------- --------- --------- --------- -------------------- --------------------------------------------------
SQL_PLAN_4pzq3z6xcqkpwbe4c314c SQL_4afec3f9bacb4abc YES ? ? ? NO ? ? ? ?NO ? ? ? ?SQL*Plus ? ? ? ? ? ? select * from objs where object_id = 2
SQL_PLAN_4pzq3z6xcqkpwd0984253 SQL_4afec3f9bacb4abc YES ? ? ? YES ? ? ? NO ? ? ? ?SQL*Plus ? ? ? ? ? ? select * from objs where object_id = 2
SQL>
5.測試
SQL>
SQL> set autotrace on
SQL> select * from objs where object_id = 2;
no rows selected
Execution Plan
----------------------------------------------------------
Plan hash value: 954894094
--------------------------------------------------------------------------
| Id ?| Operation ? ? ? ? | Name | Rows ?| Bytes | Cost (%CPU)| Time ? ? |
--------------------------------------------------------------------------
| ? 0 | SELECT STATEMENT ?| ? ? ?| ? ? 1 | ? ?98 | ? 247 ? (1)| 00:00:03 |
|* ?1 | ?TABLE ACCESS FULL| OBJS | ? ? 1 | ? ?98 | ? 247 ? (1)| 00:00:03 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
? ?1 - filter("OBJECT_ID"=2)
Note
-----
? ?- SQL plan baseline "SQL_PLAN_4pzq3z6xcqkpwd0984253" used for this statement
Statistics
----------------------------------------------------------
? ? ? ? 255 ?recursive calls
? ? ? ? ? 0 ?db block gets
? ? ? ?1044 ?consistent gets
? ? ? ? 879 ?physical reads
? ? ? ? ? 0 ?redo size
? ? ? ?1343 ?bytes sent via SQL*Net to client
? ? ? ? 513 ?bytes received via SQL*Net from client
? ? ? ? ? 1 ?SQL*Net roundtrips to/from client
? ? ? ? ?28 ?sorts (memory)
? ? ? ? ? 0 ?sorts (disk)
? ? ? ? ? 0 ?rows processed
SQL> alter session set optimizer_use_sql_plan_baselines = false;
Session altered.
SQL> select * from objs where object_id = 2;
no rows selected
Execution Plan
----------------------------------------------------------
Plan hash value: 613004408
-----------------------------------------------------------------------------------------------
| Id ?| Operation ? ? ? ? ? ? ? ? ? | Name ? ? ? ? ? ?| Rows ?| Bytes | Cost (%CPU)| Time ? ? |
-----------------------------------------------------------------------------------------------
| ? 0 | SELECT STATEMENT ? ? ? ? ? ?| ? ? ? ? ? ? ? ? | ? ? 1 | ? ?98 | ? ? 2 ? (0)| 00:00:01 |
| ? 1 | ?TABLE ACCESS BY INDEX ROWID| OBJS ? ? ? ? ? ?| ? ? 1 | ? ?98 | ? ? 2 ? (0)| 00:00:01 |
|* ?2 | ? INDEX RANGE SCAN ? ? ? ? ?| IDX_OBJSID_OBJS | ? ? 1 | ? ? ? | ? ? 1 ? (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
? ?2 - access("OBJECT_ID"=2)
Statistics
----------------------------------------------------------
? ? ? ? ? 1 ?recursive calls
? ? ? ? ? 0 ?db block gets
? ? ? ? ? 2 ?consistent gets
? ? ? ? ? 4 ?physical reads
? ? ? ? ? 0 ?redo size
? ? ? ?1343 ?bytes sent via SQL*Net to client
? ? ? ? 513 ?bytes received via SQL*Net from client
? ? ? ? ? 1 ?SQL*Net roundtrips to/from client
? ? ? ? ? 0 ?sorts (memory)
? ? ? ? ? 0 ?sorts (disk)
? ? ? ? ? 0 ?rows processed
有助于保持sql的語句特性,僅僅同意運行性能提高的運行計劃。
它不同于stored outlines, spm在于穩定sql性能,而store outlines在于凍結sql運行計劃
事列
1.啟用optimizer_cature_sql_plan_baselines 捕獲sql語句
SQL> alter session set optimizer_capture_sql_plan_baselines = true;
Session altered.
SQL> select * from objs where object_id = 2;
no rows selected
SQL> select * from objs where object_id = 2;
no rows selected
SQL> alter session set optimizer_capture_sql_plan_baselines = false;
Session altered.
2.查詢dba_sql_plan_baselines,確定sql的spm狀態
SQL> select plan_name, sql_handle, enabled, accepted, fixed,
? 2 ? ? ? ? ? ? module, sql_text
? 3 ?from dba_sql_plan_baselines;
PLAN_NAME ? ? ? ? ? ? ? ? ? ? ?SQL_HANDLE ? ? ? ? ? ENABLED ? ACCEPTED ?FIXED ? ? MODULE ? ? ? ? ? ? ? SQL_TEXT
------------------------------ -------------------- --------- --------- --------- -------------------- --------------------------------------------------
SQL_PLAN_4pzq3z6xcqkpwd0984253 SQL_4afec3f9bacb4abc YES ? ? ? YES ? ? ? NO ? ? ? ?SQL*Plus ? ? ? ? ? ? select * from objs where object_id = 2
3.添加索引改變環境再執行sql
SQL> alter session set optimizer_capture_sql_plan_baselines = true;
Session altered.
SQL> select * from objs where object_id = 2;
no rows selected
SQL> select * from objs where object_id = 2;
no rows selected
SQL> alter session set optimizer_capture_sql_plan_baselines = false;
Session altered.
4.查詢dba_sql_plan_baselines
SQL> select plan_name, sql_handle, enabled, accepted, fixed, module, sql_text from dba_sql_plan_baselines;
PLAN_NAME ? ? ? ? ? ? ? ? ? ? ?SQL_HANDLE ? ? ? ? ? ENABLED ? ACCEPTED ?FIXED ? ? MODULE ? ? ? ? ? ? ? SQL_TEXT
------------------------------ -------------------- --------- --------- --------- -------------------- --------------------------------------------------
SQL_PLAN_4pzq3z6xcqkpwbe4c314c SQL_4afec3f9bacb4abc YES ? ? ? NO ? ? ? ?NO ? ? ? ?SQL*Plus ? ? ? ? ? ? select * from objs where object_id = 2
SQL_PLAN_4pzq3z6xcqkpwd0984253 SQL_4afec3f9bacb4abc YES ? ? ? YES ? ? ? NO ? ? ? ?SQL*Plus ? ? ? ? ? ? select * from objs where object_id = 2
SQL>
5.測試
SQL>
SQL> set autotrace on
SQL> select * from objs where object_id = 2;
no rows selected
Execution Plan
----------------------------------------------------------
Plan hash value: 954894094
--------------------------------------------------------------------------
| Id ?| Operation ? ? ? ? | Name | Rows ?| Bytes | Cost (%CPU)| Time ? ? |
--------------------------------------------------------------------------
| ? 0 | SELECT STATEMENT ?| ? ? ?| ? ? 1 | ? ?98 | ? 247 ? (1)| 00:00:03 |
|* ?1 | ?TABLE ACCESS FULL| OBJS | ? ? 1 | ? ?98 | ? 247 ? (1)| 00:00:03 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
? ?1 - filter("OBJECT_ID"=2)
Note
-----
? ?- SQL plan baseline "SQL_PLAN_4pzq3z6xcqkpwd0984253" used for this statement
Statistics
----------------------------------------------------------
? ? ? ? 255 ?recursive calls
? ? ? ? ? 0 ?db block gets
? ? ? ?1044 ?consistent gets
? ? ? ? 879 ?physical reads
? ? ? ? ? 0 ?redo size
? ? ? ?1343 ?bytes sent via SQL*Net to client
? ? ? ? 513 ?bytes received via SQL*Net from client
? ? ? ? ? 1 ?SQL*Net roundtrips to/from client
? ? ? ? ?28 ?sorts (memory)
? ? ? ? ? 0 ?sorts (disk)
? ? ? ? ? 0 ?rows processed
SQL> alter session set optimizer_use_sql_plan_baselines = false;
Session altered.
SQL> select * from objs where object_id = 2;
no rows selected
Execution Plan
----------------------------------------------------------
Plan hash value: 613004408
-----------------------------------------------------------------------------------------------
| Id ?| Operation ? ? ? ? ? ? ? ? ? | Name ? ? ? ? ? ?| Rows ?| Bytes | Cost (%CPU)| Time ? ? |
-----------------------------------------------------------------------------------------------
| ? 0 | SELECT STATEMENT ? ? ? ? ? ?| ? ? ? ? ? ? ? ? | ? ? 1 | ? ?98 | ? ? 2 ? (0)| 00:00:01 |
| ? 1 | ?TABLE ACCESS BY INDEX ROWID| OBJS ? ? ? ? ? ?| ? ? 1 | ? ?98 | ? ? 2 ? (0)| 00:00:01 |
|* ?2 | ? INDEX RANGE SCAN ? ? ? ? ?| IDX_OBJSID_OBJS | ? ? 1 | ? ? ? | ? ? 1 ? (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
? ?2 - access("OBJECT_ID"=2)
Statistics
----------------------------------------------------------
? ? ? ? ? 1 ?recursive calls
? ? ? ? ? 0 ?db block gets
? ? ? ? ? 2 ?consistent gets
? ? ? ? ? 4 ?physical reads
? ? ? ? ? 0 ?redo size
? ? ? ?1343 ?bytes sent via SQL*Net to client
? ? ? ? 513 ?bytes received via SQL*Net from client
? ? ? ? ? 1 ?SQL*Net roundtrips to/from client
? ? ? ? ? 0 ?sorts (memory)
? ? ? ? ? 0 ?sorts (disk)
? ? ? ? ? 0 ?rows processed
能夠看到當啟動optimizer_user_sql_plan_baselines時走索引應該是最優的卻沒有使用
plan_name accecpt 為 no 影響了走索引計劃
轉載于:https://www.cnblogs.com/jhcelue/p/6857249.html
總結
以上是生活随笔為你收集整理的oracle spm使用1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 破解修改 Electron 软件 | 游
- 下一篇: Ajax 实现无刷新分页