Oracle的硬解析和軟解析

2022-06-22 12:27:15 字數 683 閱讀 3500

提到軟解析(soft prase)和硬解析(hard prase),就不能不說一下oracle對sql的處理過程。當你發出一條sql語句交付oracle,在執行和獲取結果前,

oracle對此sql將進行幾個步驟的處理過程:

1、語法檢查(syntax check)

檢查此sql的拼寫是否語法。

2、語義檢查(semantic check)

諸如檢查sql語句中的訪問物件是否存在及該使用者是否具備相應的許可權。

3、對sql語句進行解析(prase)

利用內部演算法對sql進行解析,生成解析樹(parse tree)及執行計畫(execution plan)。

4、執行sql,返回結果(execute and return)

其中,軟、硬解析就發生在第三個過程裡。

oracle利用內部的hash演算法來取得該sql的hash值,然後在library cache裡查詢是否存在該hash值;

假設存在,則將此sql與cache中的進行比較;

假設「相同」,就將利用已有的解析樹與執行計畫,而省略了優化器的相關工作。這也就是軟解析的過程。

誠然,如果上面的2個假設中任有乙個不成立,那麼優化器都將進行建立解析樹、生成執行計畫的動作。這個過程就叫硬解析。

建立解析樹、生成執行計畫對於sql的執行來說是開銷昂貴的動作,所以,應當極力避免硬解析,盡量使用軟解析。

Oracle的硬解析和軟解析

提到軟解析 soft parse 和硬解析 hard parse 就不能不說一下oracle對sql的處理過程。當你發出一條sql語句交付oracle,在執行和獲取結果前,oracle對此sql將進行幾個步驟的處理過程 1 語法檢查 syntax check 檢查此sql的拼寫是否語法。2 語義檢查...

Oracle硬解析 軟解析 軟軟解析 理解

硬解析 library cache 中不存在父游標或者存在父游標,但是沒有子游標 軟解析 library cache中存在父游標 子游標 軟軟解析 會話pga中存在session cursor 一條新的sql查詢,開始硬解析,會先將sql語句經過ascii轉換,通過hash演算法去遍歷library...

關於硬解析和軟解析

游標解析過程 1 包含vpd約束條件 如果使用了虛擬私有資料庫,並且被解析的sql語句中引用的某張表啟用了它的話,安全策略生成的約束條件就會被新增到where語句中。2 語法語義以及訪問許可權檢查 3 儲存父游標 不存在共享的父游標,將在庫快取中分配一些記憶體,將父游標儲存進去 4 邏輯優化 通過優...