欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Oracle硬解析與軟解析分別是什么

錢良釵2年前12瀏覽0評論

Oracle硬解析與軟解析分別是什么?

Oracle中每條SQL語句在執行之前都需要經過解析,這里面又分為軟解析和硬解析。在Oracle中存在兩種類型的SQL語句,一類為 DDL語句(數據定義語言),他們是從來不會共享使用的,也就是每次執行都需要進行硬解析。還有一類就是DML語句(數據操縱語言),他們會根據情況選擇要么進行硬解析,要么進行軟解析。要么將SQL文本等裝載進library cache中的heap中。

1.硬解析

硬解析一般包括下面幾個過程:

1)對SQL語句進行語法檢查,看是否有語法錯誤。比如select from where 等的拼寫錯誤,如果存在語法錯誤,則推出解析過程;

2)通過數據字典(row cache),檢查SQL語句中涉及的對象和列是否存在。如果不存在,則推出解析過程。

3)檢查SQL語句的用戶是否對涉及到的對象是否有權限。如果沒有則推出解析;

4)通過優化器創建一個最優的執行計劃。這個過程會根據數據字典中的對象的統計信息,來計算多個執行計劃的cost,從而得到一個最優的執行計劃。這一步涉及到大量的數據運算,從而會消耗大量的CPU資源;(library cache最主要的目的就是通過軟解析來減少這個步驟);

5)將該游標所產生的執行計劃,SQL文本等裝載進library cache中的heap中。

2.軟解析

所謂軟解析,就是因為相同文本的SQL語句存在于library cache中,所以本次SQL語句的解析就可以去掉硬解析中的一個活多個步驟。從而節省大量的資源的耗費。

3.軟軟解析

所謂的軟軟解析,就是不解析。當設置了session_cached_cursors參數時,當某個session第三次執行相同的SQL語句時,則會把該SQL語句的游標信息轉移到該session的PGA中。這樣,當該session在執行該SQL語句時,會直接從PGA中取出執行計劃,從而跳過硬解析的所有步驟。