SQL處理的主要步驟

we6100發表於2015-11-10
    SQL語句在處理中要經過幾個步驟,分別是分析、繫結和執行。Oracle使用遊標(專用SQL區)來儲存分析過的語句以及與當前處理的語句有關的其他資訊。
Oracle自動為所有SQL語句開啟一個遊標。

    分析
    在分析步驟中,Oracle要做以下幾件事情來檢查SQL語句:
1.Oracle檢查語句在語法上是否正確。伺服器檢視資料字典,看錶和列的說明是否正確;
2.Oracle確認你是否有許可權執行試圖通過SQL語句執行的活動
3.Oracle制定語句的執行計劃,它包括選擇訪問語句中物件的最好方法。
    在檢查了許可權後,為了標示語句,Oracle分配給SQL語句一個數----SQL雜湊值。如果SQL雜湊值(HASH)已存在記憶體中,Oracle將查詢語句現存的執行計劃,此執行計劃詳細描述訪問各種資料庫物件的最佳方法。
如果執行計劃存在,Oracle將直接跳到使用該執行計劃的實際執行語句。這稱為軟解析,是語句處理的首選技術。因為使用已有的執行計劃,所以軟解析很快且很有效。
    相對於軟解析的是硬解析。如果在記憶體中找不到語句的SQL雜湊值,則Oracle必須進行硬解析,硬解析很耗費系統記憶體和其他資源。Oracle必須建立一個新的執行計劃,這意味著它必須估計大量可能性,並從中選出
最好的計劃。在這種處理中,為檢查資料字典,Oracle需要多次訪問庫快取記憶體和字典快取記憶體,而且每次訪問這些共同使用的區,Oracle都需要使用閂(低階別的序列控制機制)保護SGA中的共享資料結構。因此
硬解析會增加閂的爭用。
    任何時候,只要語句處理中存在嚴重的資源爭用,執行時間就會增加。請注意,硬解析太多將會導致共享池破碎,使爭用惡化。
    在解析操作完成後,Oracle為語句分配一個共享SQL區,只要此解析過的語句在該記憶體中,任何使用者都可以訪問它。

    繫結
    在繫結步驟中,Oracle檢索分析步驟所使用的變數值。請注意,僅在分析步驟完成後,變數才擴充套件為文字值。

    執行
    Oracle完成分析和繫結之後,就開始執行語句。注意, Oracle將首先檢查語句的分析表示在記憶體中是否存在。如果存在,則使用者可以直接執行此分析過的語句,用不著再經過分析處理。
    資料庫從磁碟讀資料到記憶體緩衝區(如果在記憶體之中未發現資料)是在執行階段進行的。資料庫還自動進行必需的鎖定,保證記錄在SQL語句執行中所作的更改,在SQL執行後,Oracle將自動關閉遊標。



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

相關文章