Oracle體繫結構之SQL語句的執行過程

來源:互聯網
上載者:User

一般來說,資料庫處理SQL都會經過三個過程:解析(parse)、執行(exec)、返回結果(fetch)

1.解析

當使用者發起一個SQL語句時,Oracle通過Server Process 接收SQL語句到達oracle執行個體,並在Shared pool 中的 Library Cache 尋找是否存在該語句對應執行計畫的緩衝。

如果不存在則將該SQL進行硬解析(Hard parse),產生最佳化的執行計畫(plan),並將該執行計畫等資訊載入Library Cache。

如果存在則不經過硬解析,而是直接進行軟解析(Soft parse),從而減少資料庫的分析時間。

2.執行

server process首先在buffer cache中尋找是否存在該執行計畫所對應的資料區塊,如果存在,就直接進行DML操作(邏輯IO),否則應從資料檔案中將資料區塊讀取到buffer cache中,再進行DML操作(物理IO)。

3.返回結果

對於SELECT語句需要返回結果,首先看是否需要排序,如果需要則排序後返回給使用者。

對於其他DML語句(insert/delete/update),則無需返回結果。當buffer cache中的資料區塊被修改時,server process將自動記錄buffer的改變過程到SGA中的redo log buffer,最終分別由DBWR和LGWR進程負責將buffer cache中的髒資料區塊和redo log buffer中的日誌寫到磁碟中的data file和redo log file。


解析類型:硬解析、軟解析、軟軟解析
對SQL的解析都需要頻繁地訪問資料字典
硬解析:
判斷SQL語句是否存在文法、語義的問題
判斷SQL語句所涉及的對象(表、視圖)是否存在
判斷執行SQL語句的使用者對涉及的對象是否有許可權
選擇最優的執行方案,產生執行計畫
其中產生執行計畫最消耗系統資源(CPU、I/O、Memory),尤其是CPU和I/O資源
軟解析:只判斷SQL語句的文法、語義、對象許可權,而不產生執行計畫
軟軟解析:不解析
SQL> select name,value from v$sysstat where name like 'parse%' ;
NAME                                VALUE
------------------------------ ----------
parse time cpu                      1339
parse time elapsed                  17374
parse count (total)                23639
parse count (hard)                  3060
parse count (failures)                149
parse count (describe)                  9

Oracle體繫結構系列相關文章:

Oracle體繫結構之SCN、執行個體恢複

Oracle體繫結構之檢查點

Oracle體繫結構之SQL語句的執行過程

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.