sql tuning04-interpreting execution plans

1
Interpreting Execution Plans 1. ԟፓຽ: 1. ݐಗᤈᦇښ; 2. ดᐏಗᤈᦇښ; 3. ᥴ᯽ಗᤈᦇښ; 2. ಗᤈᦇښጱᥴ᯽: 1. SQLݙጱಗᤈᦇښฎኧݙӾᤈრጱಗᤈᦇښᕟ౮; 2. ಗᤈᦇښฎአᆿৼىᔮൈᬿጱ,؟Ӟӻጱᕮ; 3. ই፡ಗᤈᦇښ: 1. PLAN_TABLE:ฎኧEXPLAIN PLANեᘏSQL/PLUSautotraceԾኞጱಗᤈᦇښ,ฎቘᦞӤጱಗᤈᦇښ; 2. v$sql_plan:Shared PoolӾጱLibrary CacheӾכጱਫᴬአጱಗᤈᦇښ; 3. v$sql_plan_monitor:11gӾጱಗᤈᦇښፊഴ; 4. dba_hist_sql_plan:AWRޞԾኞጱಗᤈᦇښ; 5. stats$sql_plan:ฎኧStatspackኞ౮ጱಗᤈᦇښ; 6. SQL Management Base:ฎኧSQL Plan Management BaselinesԾኞጱಗᤈᦇښ; 7. SQL tuning set; 8. DBMS_MONITORԾኞጱtraceկ:ፘ୮ԭ10046Ԫկ; 9. 10053ԪկԾኞጱtraceկ; 10. 10gR2ԏݸdump᪙կ; 4. ፡ಗᤈᦇښጱᥤ: 1. ইຎፗള፡चᤒጱᦾ,໑෫ဩፗള፡کಗᤈᦇښᳵጱى,ᛔ૩ᖫSQLݙ፡உἋᅸ,ݢզአDBMS_XPLAN ۱ӥᶎጱڍහਠ౮; 2. DBMS_XPLAN.DISPLAY():አดᐏplan_tableӾጱಗᤈᦇښ; 3. DBMS_XPLAN.DISPLAY_CURSOR():አดᐏv$sql_planӾጱಗᤈᦇښ; 4. DBMS_XPLAN.DISPLAY_AWR():አดᐏAWRӾጱಗᤈᦇښ; 5. DBMS_XPLAN.DISPLAY_SQLSET():አดᐏSQL tuning setӾጱಗᤈᦇښ; 6. DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE():አดᐏSQL Plan Management BaselinesӾጱಗᤈᦇ ښ; 5. EXPLAIN TABLEե: 1. ኞ౮Ӟӻսጱಗᤈᦇښ,PLAN_TABLEӾ,ଚӧਫᴬಗᤈSQLݙ; 2. :EXPLAIN PLAN [SET STATEMENT_ID = 'text'] [INTO plan_table] FOR statement;ἕᦊൊ فکPLAN_TABLEᤒӾ; 3. PLAN_TABLE: 1. ୮ಗᤈEXPLAN_PLANեᛔڠPLAN_TABLE,ਙฎӞӻݶԎ,ݻsys.plan_table$ጱԁ ;SELECT * FROM dba_synonyms WHERE synonym_name = 'PLAN_TABLE';SELECT table_name, TEMPORARY, duration FROM dba_tables WHERE table_name = 'PLAN_TABLE$'; 2. ݢզ໑ഝ$ORACLE_HOME/rdbms/admin/utlxplan.sqlڠୌᛔ૩ጱᤒ,ԅἕᦊฎԁᤒ,ݝᚆ୮ ڹsession,کفᛔ૩ጱᤒӾ੪ݢզԋכ; 3. սᅩฎSQLݙԍ፥ྋಗᤈ;ᗌᅩฎݢᚆӧฎ፥ྋጱಗᤈᦇښ,ݝአᕬਧݒᰁಗᤈᦇښӧٵ,ਙఘ ٭ٵ; 4. ᤒӾጱฎ੶ᕆᕮ,ݢզ᭗ᬦIDPAREANT_IDڜى; 4. DBMS_XPLAN.DISPLAYڍහဩ:DBMS_XPLAN.DISPLAY(table_name, statement_id, format, filter_preds): 1. table_name:ἕᦊฎPLAN_TABLE; 2. statement_id:ἕᦊฎᑮ,ݢզ໑ഝᬯӻහਧጱݙጱಗᤈᦇښ; 3. format:ἕᦊฎTYPICAL,՜ᔄଆ,ดᐏጱ௳מ; 4. ἕᦊݝ፡ӤӞݙጱಗᤈᦇښ; 5. ፡ਧstatement_idጱಗᤈᦇښ; 6. ፡ๅग़ጱಗᤈᦇښ௳מ; 6. AUTOTRACE: 1. AUTOTRACEsql*plusۑ,oracle7.3ڊݸ,Ԟฎᦕ୯නPLAN_TABLEᤒӾ; 2. ᵱᥝPLUSTRACEv$Ӿ༄ᔱᕹᦇ௳מ,$ORACLE_HOME/sqlplus/admin/plustrce.sql ڠ; 3. ἕᦊఘ٭ӥ,ಗᤈਠᧃݸݙտኞ౮ಗᤈᦇښᕹᦇ௳מ; 4. ፘ୮ԭಗᤈԧӞEXPLAIN PLANեᆐݸಗᤈԧӞݙ,ইຎአᕬਧݒᰁጱᦾݢᚆӧฎ፥ਫጱᦇښ; 5. :SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]; 1. ON:ᥝดᐏᕮຎtrace௳מ; 2. TRACEONLY:ӧดᐏᕮຎ; 6. ፡୮ڹጱᦡᗝ:show autotrace; 7. ᴅᕹᦇ௳מ: 1. recursive calls:᭓୭ጱ᧣አ,ݐහഝ,,ڜ௳מ.ᒫӞಗᤈտஉय़,զݸಗᤈտݒ;ইຎአ ᬦጱᦾ,ᬯӻӞᛱտஉय़,ԭྋଉ;ݢզ᭗ᬦႴᴻshared_poolၥᦶ:alter system flush shared_pool; 2. db block gets:ץද୮ڹᇫாጱහഝጱblockጱහ.ݝDMLݙտdb block getsے,ԅ୮ ڹտᤩๅෛ,SELECTݙጱᦾӧտीے,ԅݢզݐREDOᘏ᭜ጱCR; 3. consistent gets:᭦ᬋጱහᰁ(ӧฎBLOCK),ᤒᐏᬬᦕ୯ጱಢහ,᪙୮ڹarraysizeى; 1. arraysize:ᤒᐏӞᬬጱᦕ୯හ,᭗ᬦshow arraysizeե፡; 2. ᔋኼฎᓒဩฎ:consistent gets=rows processed/arraysize,ᦕ୯ग़ളᬪ; 3. ս۸ଫᧆىஞፘݶarraysizeӥٺੜྌ,ٺܨੜ᭦ᬋ; 4. physical reads:ᇔቘ,ܨᏝፏݐBLOCKጱහᰁ,BUFFER CACHEय़ᬯӻੜ,ݢզ᭗ᬦႴᴻBUFFER CACHEၥᦶ:alter system flush buffer_cache; 5. redo size:Ծኞጱ෭பጱහᰁ,ӞᛱDMLݙտԾኞ; 6. bytes sent via SQL*Net to client:ۓݎکਮᒒጱහ; 7. bytes received via SQL*Net from client:ۓളතکਮᒒጱහ; 8. SQL*Net roundtrips to/from client:SQLጱᗑᕶᰁጱහ,Ԟ᪙arraysizeى; 9. sorts (memory):Ӿጱഭଧහᰁ,ԆᥝฎPGA; 10. sorts (disk):Ꮭፏጱഭଧ,ଫᧆعᬯӻ; 11. rows processed:ቘጱᦕ୯හ; 8. v$sql_plan: 1. v$sql_plan:library cahceӾ፥ྋአጱಗᤈᦇښ;PLAN_TABLEݝฎቘᦞӤጱಗᤈᦇښ; 2. ݢզ᭗ᬦsql_idڜӨv$sqlى,Ԟݢզአaddresshash_value; 3. Ԇᥝጱڜ: 1. HASH_VALUE:ݙlibrary cacheӾጱߢ; 2. ADDRESS:ᦢᳯSQLݙݙ,ܨ; 3. CHILD_NUMBER:አྌಗᤈᦇښጱৼCURSORහᰁ; 4. POSITION:ݶPARENT_IDጱጱಗᤈᶲଧ; 5. PARENT_ID:ڊᬦᑕጱӥӞӻಗᤈጱᬦᑕID,ᬯӻஉು,کಗᤈᦇښ,உฃቘᥴᬯӞᅩ; 6. ID:ӞӻṈጱᖫݩ; 7. PLAN_HASH_VALUE:ಗᤈᦇښߢ; 4. ፡ਫᴬጱಗᤈᦇښ:SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('sql_id')); 5. v$sql_plan_statistics:׀ਫᴬಗᤈጱᕹᦇ ௳מ1. STATISTICS_LEVELᦡᗝԅALLտතᵞ; 2. ݙӾਧԧGATHER_PLAN_STATISTICShint; 3. v$sql_plan_statistics_all:ಅጱਫᴬಗᤈጱᕹᦇ௳מ; 6. v$sql_workarea:׀ԧSQL CURSORአጱૡ܄௳מ; 9. AWR: 1. AWRฎԅԧ༄ၥᛔ᧣ෆԅፓጱጱතᵞ,,ᖌಷᚆᕹᦇ௳מ; 2. ᕹᦇ௳מ۱ೡ: 1. ᕹᦇ௳מ; 2. ᳵཛྷᕹᦇ௳מ; 3. ӞԶᔮᕹsessionጱᕹᦇ௳מ; 4. ASH(Active Session History)ᕹᦇ௳מ; 3. ᛔኞ౮ᚆහഝጱளᆙ; 4. ᯿ᥝጱAWR: 1. V$ACTIVE_SESSION_HISTORY; 2. V$metric views; 3. DBA_HIST views: 1. DBA_HIST_ACTIVE_SESS_HISTORY; 2. DBA_HIST_BASELINE; 3. DBA_HIST_DATABASE_INSTANCE; 4. DBA_HIST_SNAPSHOT; 5. DBA_HIST_SQL_PLAN; 6. DBA_HIST_WR_CONTROL; 5. sql_idAWRӾጱsqlጱಗᤈᦇښ: SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('g22czkqq3pxmb')); 6. AWRහഝኞ౮ӞӻSQLޞ:@$ORACLE_HOME/rdbms/admin/awrsqrpt; 10. SQL Monitoring:11g; 11. ᴅಗᤈᦇښ: 1. ಗᤈᦇښጱᶲଧ: 1. Ӥஃӥ፡,ᒫӞӻဌدৼᅩጱᅩضಗᤈ; 2. ಗᤈಗᤈس; 3. ݸಗᤈᆿᅩ; 2. ੪ฎԫӾጱݸଧጱොୗ: 1. ڹ:ձӞৼ,ضᦢᳯ໑,ݸ,ݸݦ; 2. Ӿଧ:ձӞৼ,ض,ݸᦢᳯ໑,ݸݦ; 3. ݸ:ձӞৼ,ض,ݸݦ,ݸᦢᳯ໑; 3. : 1. ಗᤈጱᶲଧԅ:356421; 2. ಗᤈጱᶲଧԅ:43652871; 3. ಗᤈᶲଧԅ:325410; 4. ፡ಗᤈᦇښጱୌᦓ: 1. ᥝḝᤒכ೮অጱᬦᄁկ,ܨḝᤒੜጱᦕ୯; 2. Ӟᬬጱහഝᰁੜ; 3. ྋᏟአᥤ,ݝฎአӞ੶,ᰁӧᥝॺ; 4. عአᒢܜਫ਼ᑌ; 12. ՐՐᶌӞӻಗᤈᦇښӧᚆ᧔กਙฎވฎঅጱ,ݢզSQL Tuning Advisor;

Upload: zhaoyang-wang

Post on 20-Jan-2017

81 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: SQL Tuning04-Interpreting Execution Plans

Interpreting Execution Plans1. :

1. ;2. ;3. ;

2. :1. SQL ;2. , ;

3. :1. PLAN_TABLE: EXPLAIN PLAN SQL/PLUS autotrace , ;2. v$sql_plan: Shared Pool Library Cache ;3. v$sql_plan_monitor:11g ;4. dba_hist_sql_plan: AWR ;5. stats$sql_plan: Statspack ;6. SQL Management Base: SQL Plan Management Baselines ;7. SQL tuning set;8. DBMS_MONITOR trace : 10046 ;9. 10053 trace ;

10. 10gR2 dump ;4. :

1. , , SQL , DBMS_XPLAN;

2. DBMS_XPLAN.DISPLAY(): plan_table ;3. DBMS_XPLAN.DISPLAY_CURSOR(): v$sql_plan ;4. DBMS_XPLAN.DISPLAY_AWR(): AWR ;5. DBMS_XPLAN.DISPLAY_SQLSET(): SQL tuning set ;6. DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE(): SQL Plan Management Baselines

;5. EXPLAIN TABLE :

1. , PLAN_TABLE , SQL ;2. :EXPLAIN PLAN [SET STATEMENT_ID = 'text'] [INTO plan_table] FOR statement;

PLAN_TABLE ;3. PLAN_TABLE:

1. EXPLAN_PLAN PLAN_TABLE, , sys.plan_table$;SELECT * FROM dba_synonyms WHERE synonym_name = 'PLAN_TABLE';SELECT

table_name, TEMPORARY, duration FROM dba_tables WHERE table_name = 'PLAN_TABLE$';

2. $ORACLE_HOME/rdbms/admin/utlxplan.sql , ,session , ;

3. SQL ; , ,;

4. , ID PAREANT_ID ;4. DBMS_XPLAN.DISPLAY :DBMS_XPLAN.DISPLAY(table_name, statement_id, format,

filter_preds):1. table_name: PLAN_TABLE ;2. statement_id: , ;3. format: TYPICAL , , ;4. ;

5. statement_id ;

6. ;

6. AUTOTRACE:1. AUTOTRACE sql*plus , oracle7.3 , PLAN_TABLE ;2. PLUSTRACE v$ , $ORACLE_HOME/sqlplus/admin/plustrce.sql

;3. , ;4. EXPLAIN PLAN , ;5. :SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]];

1. ON: trace ;2. TRACEONLY: ;

6. :show autotrace;7. :

1. recursive calls: , , , . , ;, , ; shared_pool :alter system flush

shared_pool;2. db block gets: block . DML db block gets ,

,SELECT , REDO CR ;3. consistent gets: ( BLOCK), , arraysize ;

1. arraysize: , show arraysize ;2. :consistent gets=rows processed/arraysize, ;3. arraysize , ;

4. physical reads: , BLOCK ,BUFFER CACHE , BUFFER CACHE :alter system flush buffer_cache;

5. redo size: , DML ;6. bytes sent via SQL*Net to client: ;7. bytes received via SQL*Net from client: ;8. SQL*Net roundtrips to/from client:SQL , arraysize ;9. sorts (memory): , PGA;

10. sorts (disk): , ;11. rows processed: ;

8. v$sql_plan:1. v$sql_plan: library cahce ;PLAN_TABLE ;2. sql_id v$sql , address hash_value ;3. :

1. HASH_VALUE: library cache ;2. ADDRESS: SQL , ;3. CHILD_NUMBER: CURSOR ;4. POSITION: PARENT_ID ;5. PARENT_ID: ID, , , ;6. ID: ;7. PLAN_HASH_VALUE: ;

4. :SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('sql_id'));5. v$sql_plan_statistics:

1. STATISTICS_LEVEL ALL ;2. GATHER_PLAN_STATISTICS hint;3. v$sql_plan_statistics_all: ;

6. v$sql_workarea: SQL CURSOR ;

9. AWR:1. AWR , , ;2. :

1. ;2. ;3. session ;4. ASH(Active Session History) ;

3. ;4. AWR :

1. V$ACTIVE_SESSION_HISTORY;2. V$metric views;3. DBA_HIST views:

1. DBA_HIST_ACTIVE_SESS_HISTORY;2. DBA_HIST_BASELINE;3. DBA_HIST_DATABASE_INSTANCE;4. DBA_HIST_SNAPSHOT;5. DBA_HIST_SQL_PLAN;6. DBA_HIST_WR_CONTROL;

5. sql_id AWR sql : SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('g22czkqq3pxmb'));

6. AWR SQL :@$ORACLE_HOME/rdbms/admin/awrsqrpt;10. SQL Monitoring:11g;11. :

1. :1. , ;2. ;3. ;

2. :1. : , , , ;2. : , , , ;3. : , , , ;

3. :1. :356421;

2. :43652871;

3. :325410;

4. :1. , ;2. ;3. , , ;4. ;

12. , SQL Tuning Advisor ;