oracle處理SQL的過程

sembh發表於2010-07-10

任何SQL語句的執行,都會經過Parse,execution,fetch三個階段.

Parse階段:檢查SQL語句的語法和語義,生成SQL的執行計劃,並放到share pool內.使用者程式將SQL語句傳送到伺服器程式:(1)搜尋share pool 內的library cache,檢查是否存在相同的SQL.相同的話,就可以直接執行.(2)如果library cache內沒有相同的SQL,那麼檢查該 SQL,生成執行計劃,完成虛擬碼編譯.需要若干次系統資料字典的訪問.所以share pool內必須要有dictionary cache.(3)申請各種需要的系統資源,所,快取塊等操作.

execution階段:按照生成的執行計劃中所安排的步驟執行SQL:(1)確定處理的資料所在資料塊,是否已經被讀取到db cache內.如果已經存在於db cache內,則直接提取資料.(2)若資料不在db cache內,則dbwr將資料從資料檔案讀取到db cache內.

fetch階段:被選擇行所在資料塊將被讀取到db cache中.伺服器程式將被查詢或處理的資料返回到使用者程式.還有:(1)資料排它型別鎖的申請和獲予,防止其他使用者修改相同資料.(2)將資料變化內容寫到重做日誌緩衝區.(3)複製db cache中資料塊的原始值到 undo tablespace中,修改或將更新資料寫到db cache中.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24214296/viewspace-1035133/,如需轉載,請註明出處,否則將追究法律責任。

相關文章