Oracle釋出一個SQL語句的處理過程

shwenwen發表於2007-10-23
Oracle釋出一個SQL語句的處理過程,解釋了sql執行時軟解析和硬解析。[@more@]

Oracle釋出一個SQL語句的處理過程:
1、將該語句轉化成ASCII等效數字碼
2、將ASCII等效數字碼傳遞給一個雜湊演算法,由該雜湊演算法產生一個單獨的雜湊
3、搜尋當前使用者的session快取中(在PGA中)是否存在相同的雜湊版本,如果存在,就直接執行該語句。這就是fast parse。
4、如果在PGA中沒有命中,查詢其他的session中是否有相同的雜湊,這就需要到共享池的庫快取中對查詢。如果在庫快取中找到相同的雜湊。這就是soft parse。
5、若在3和4中都沒有找到相同雜湊,使用者程式進行語法檢查過程(Syntax Check)。語法檢查主要時檢查語法是否符合SQL Reference Manual中給出的SQL語法。
6、語法檢查透過之後,再進行語義分析過程(Semantic Analysis)。這個過程就是檢查物件的合法性。檢查表是否存在,列是否存在,是否有許可權訪問等等。
7、選擇執行計劃。準備從可用的執行計劃中選擇一個執行計劃,其中包括儲存大綱(srored outline)或物化檢視(materialized view)相關的決定。
8、生成該語句的一個編譯程式碼(p-code)。這完整的整個步驟就是hard parse。

example:
SQL>select * from test ; --hard parse
SQL>select * from TEST ; --hard parse
SQL>select * from test ; --soft parse
SQL>alter session set session_cached_cursors=100;
SQL>select * from test ; --soft parse
SQL>select * from test ; --fast parse

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

相關文章