日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORACLE 执行计划2

發(fā)布時(shí)間:2024/4/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE 执行计划2 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
SQL>set timing on?????????????????????????????????? --顯示Elapsed執(zhí)行總時(shí)間。區(qū)別于set time on

方式一:
SQL>set autotrace on/off???????????????????????? --顯示結(jié)果集、執(zhí)行計(jì)劃和統(tǒng)計(jì)信息(執(zhí)行SQL)
SQL>set autotrace?traceonly??????????????????? --顯示執(zhí)行計(jì)劃和統(tǒng)計(jì)信息, 不顯示結(jié)果集(執(zhí)行SQL)
SQL>set autotrace traceonly explain??????? --只顯示執(zhí)行計(jì)劃(不執(zhí)行SQL)
SQL>set autotrace?traceonly statistics???? --只顯示統(tǒng)計(jì)信息(不執(zhí)行SQL)
SQL>SELECT * FRM T_BD_ACCOUNTVIEW;

方式二:
SQL>explan plan for select * from t_bd_accountview;
SQL>SELECT plan_table_output FROM table(DBMS_XPLAN.DISPLAY('t_bd_accountview'));
SQL>SELECT * FROM table(dbms_xplan.display);

方式三:
SQL>alter session set SQL_TRACE=true;
SQL>SELECT sid, serial#, username from v$session where username = 'xxxx'
SQL>exec dbms_system.set_SQL_TRACE_in_session(sid, serial#,true/false)
--跟蹤其它用戶
SQL>alter session set events '10046 trace name context forever, level 8')?? //or '10046 trace name context off'
SQL>exec dbms_system.set_ev(sid, serial#,10046, 0-8(level), username);

執(zhí)行計(jì)劃中的字段解釋:
ID:一個(gè)序號(hào),但不是執(zhí)行的先后順序。執(zhí)行的先后順序根據(jù)縮進(jìn)來判斷
Operation:當(dāng)前操作的內(nèi)容
Rows:當(dāng)前操作的cardinality, Oracle根據(jù)CBO估算當(dāng)前操作返回的結(jié)果集
Cost(CPU):Oracle計(jì)算出來的一個(gè)數(shù)值(代價(jià)), 用于說明SQL執(zhí)行的代價(jià)
Time: oracle估計(jì)當(dāng)前操作的時(shí)間
謂詞說明:
Access:影響數(shù)據(jù)的訪問路徑(表還是索引)
Filter:只起過濾數(shù)據(jù)的作用。

explain plan各列的含義:
ID_PLUS_EXP
PARENT_ID_PLUS_EXP
PLAN_PLUS_EXP
OBJECT_NODE_PLUS_EXP

Statistics各列含義:
db block gets???????? --從buffer cache中讀取的block數(shù)量
constient gets??????--從buffer cache中讀取的undo數(shù)據(jù)的block數(shù)量
?????????????????????????????????---because of查詢過程中,由于其它回話對(duì)數(shù)據(jù)塊進(jìn)行了操作,而對(duì)所要查詢的塊有了修改。讀取其以保證一致性。
physical reads???? --從磁盤讀取的block的數(shù)量
redo size????????????? --DML生成的redo的大小 ( 重做數(shù)——執(zhí)行SQL的過程中,產(chǎn)生的重做日志的大小)
sorts(memory)?????--在內(nèi)存執(zhí)行的排序量
sorts(dis)?????????????--在磁盤執(zhí)行的排序量

邏輯讀:db block gets + constient gets
物理讀:physical reads

緩沖區(qū)使用的命中率 = 1 - 物理讀 / (緩沖塊讀+緩沖undo讀)
SQL>SELECT name, value FROM v$sysstat WHERE name IN('db block gets', 'consistent gets', 'physical reads');
如果buffer cache的命中率在90%以上,否則需要增加數(shù)據(jù)緩沖區(qū)的大小

動(dòng)態(tài)分析
如果執(zhí)行計(jì)劃中出現(xiàn)提示:
--dynamic sampling used for the statement
表示用戶使用了動(dòng)態(tài)采樣技術(shù)CBO模式下。===>從而推斷這個(gè)表可能沒有做過分析,可有導(dǎo)致兩種現(xiàn)象:
1.該表沒有做過分析,CBO采用動(dòng)態(tài)采樣分析數(shù)據(jù),也可以得出正確的執(zhí)行計(jì)劃
2.分析信息過舊,CBO不會(huì)動(dòng)態(tài)采樣,采用舊的信息,從而導(dǎo)致錯(cuò)誤的執(zhí)行計(jì)劃。

總結(jié)

以上是生活随笔為你收集整理的ORACLE 执行计划2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。