欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

使用 EXPLAIN PLAN 獲取SQL語句執行計劃

系統 1918 0

???? SQL查詢語句的性能從一定程度上影響整個數據庫的性能。很多情況下,數據庫性能的低下差不多都是不良SQL語句所引起。而SQL語句的執行
計劃則決定了SQL語句將會采用何種方式從數據庫提取數據并返回給客戶端,本文描述的將是如何通過EXPLAIN PLAN 獲取SQL語句執行計劃來獲
取SQL語句的執行計劃。

一、獲取SQL語句執行計劃的方式
??? ?1. 使用explain plan 將執行計劃加載到表plan_table,然后查詢該表來獲取預估的執行計劃
??? ?2. 查詢動態性能視圖v$sql_plan,v$sql_plan_statistics,v$sql_workarea 等來獲取已緩存到庫緩存中的真實執行計劃
???? 3. 查詢自動工作量資料庫(Automatic Workload Repository)或查詢Statspack,即從資料庫中獲取執行計劃
??? ?4. 啟用執行計劃跟蹤功能,即autotrace功能
???? 5. 使用PL/SQL Developer提供的獲取執行計劃方法
???? 6. 使用Toad工具來獲取執行計劃

?下面主要討論使用explain plan獲取執行計劃的方法

二、explain plan工作實質、前提及操作方法
??? ?1. 工作實質
????? 將SQL語句預估的執行計劃加載到表plan_table,是對表plan_table 執行了DML操作,故不會執行隱式提交
???? ?可以對select,insert,update,merge,delete,create table, create index,alter index等加載執行計劃到plan_table

???? 2. 前提條件
???? ?需要先創建plan_table,創建方法:@?/rdbms/admin/utlxplan
????? 對當前的SQL語句有執行權限以及對依賴的對象有相應操作的權限

???? 3. 使用方法:
?????? explain plan for select * from scott.emp where ename='SCOTT';??? --未設置標記位
?????? explain plan set statement_id='TEST' for select * from scott.emp where ename='SCOTT'? --設置標記位為TEST

三、實戰演習 ?
?1.環境??

?2.創建測試表演示獲取執行計劃?

?3.使用自頂向下的讀取方法獲取執行計劃

??上面的例子的讀取方法:
?????? 執行4.1的索引唯一掃描
????? ?將4.1的結果集返回給3.1
??? ???執行3.2的全表掃描
???? ??將3.1和3.2步驟的結果集返回給2.1
??? ???執行2.1的嵌套循環
???? ??返回最終結果集
????? ?注意嵌套循環的查詢方法
???? ??Oracle 從第一個行源中讀取第一行,然后和第二個行源中的所有記錄行進行比對,所有匹配的記錄放在結果集中,然后Oracle 將讀第一
??? ???個行源中的下一行。依次類推,直到第一行源中的所有行處理完畢。
?4.使用構建樹方式查看執行計劃


??? ??查詢結果中的order列與opt列
??? ??order
?????????? order列的指名了ID,父ID,以及執行計劃中這一步驟的位置。
?????????? ID列標識了這個步驟,但并沒有說明執行的順序
????????? ?父ID表明了這個步驟中的父步驟
?????????? 位置信息說明了父ID相同的子操作的執行順序????
????? opt
?????????? 說明當前優化器使用的模式
???? ?分析
?????????? 首先會從步驟3開始執行,步驟3通過索引唯一掃描PK_EMP將得到的結果集返回給父步驟2
?????????? 步驟2根據上一子步驟3得到的rowid訪問表EMP并將結果集返回給父步驟1
?????????? 對于步驟2檢索到的每一行數據,步驟1會將deptno傳遞給步驟5
?????????? 步驟5根據得到的deptno執行索引唯一掃描并將結果集返回給步驟4
?????????? 步驟4根據步驟5得到的rowid 訪問表dept,并將結果集返回給父步驟1
?????????? 對于步驟3中剩余的行依次按上述方式將所有結果集返回給步驟1
?????????? 步驟1將獲得的最終結果集返回給步驟0,SQL完成查詢
??
????? 根據查詢返回的結果來構建執行計劃樹
?????????? 從ID為1的列開始,作為根節點
?????????? 尋找所有父ID為1的所有子ID,如本例為2和4,將其納入樹中
?????????? 分別尋找以2和4為父ID的所有子ID,將其納入樹中
?????????? 如此循環直到所有的ID沒有父ID

????????????? ---------------
????????????? NESTED LOOP (1)
????????????? ---------------
?????????????? -???? ?? -
???????????? -?????? ??? -??
??????????? -?????????? ?? -
?????? ---------????? ??----------
?????? EMP (2)???????? ??DEPT(4)
?????? ---------????? ??----------
?????????? -???????????? ?? -
????????? -???????????? ?? ??-
?? ---------????? ?????? ?----------
?? PK_EMP(3)????? ????? ??PK_DEPT(5)????
?? ---------???? ?????? ?----------
?5.通過Oracle 自帶的SQL語句執行計劃
??可以通過Oracle提供的SQl語句來獲得當前會話最后一條SQL語句的執行計劃

???utlxpls.sql?? -->用于查看串行執行計劃
???utlxplp.sql?? -->用于查看并行執行計劃?


四、總結:
???? 1. explain plan并不執行當前的SQL語句,而是根據數據字典中記錄的統計信息獲取最佳的執行計劃并加載到表plan_table。
??? ?2. 由于統計信息,執行環境的變化,explain plan與實際的執行計劃可能會有差異。
??? ?3. 對于運行時將較長的SQL語句,不需要等到結果輸出即可提前獲得該SQL的執行計劃,對于生產環境調試情況會減輕數據庫負荷。
??? ?4. 注意set statement_id標識符區分大小寫。

?
?

使用 EXPLAIN PLAN 獲取SQL語句執行計劃


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: k8久久久一区二区三区 | www.一区 | 成人亚洲A片V一区二区三区婷婷 | 夜色亚洲 | 狠狠色丁香婷婷综合久久片 | 91麻豆精品一区二区三区 | 男女猛烈视频 | 91精品久久久久久久久久 | 91久久精品国产一区二区 | 亚洲国产天堂久久精品网 | 欧美a级毛毛片免费视频试播 | 亚洲福利视频网 | 欧美日韩中文字幕在线 | 九色视频网站 | 久久精品视频在线观看 | 污污网站国产精品白丝袜 | 五月天色婷婷综合 | 嫩草影院在线看 | 君岛美绪一区二区三区在线视频 | 看全色黄大色黄大片色黄看的 | 人妖一区| 日日麻批 | 欧美日韩成人一区二区 | 一级片| 欧美理论影院在线观看免费 | 久久综合一| 欧美男女网站 | 国产精品久久久久久久一区探花 | 99久久精品免费看国产 | 特级做a爰片毛片免费看 | 成人免费一级毛片在线播放视频 | 欧美成人午夜在线全部免费 | 波多久久亚洲精品AV无码 | 国产精品视频网站 | 男人j进女人j啪啪无遮挡动态 | 国产成人精品免费视频大全可播放的 | 操操操操网| 丝袜偷窥亚洲综合 | 久久综合婷婷香五月 | 精品免费国产一区二区三区四区 | 欧美天天在线 |