Oracle SQL的硬解析和軟解析

來源:互聯網
上載者:User

我們都知道在Oracle中每條SQL語句在執行之前都需要經過解析,這裡面又分為軟解析和硬解析。在Oracle中存在兩種類型的SQL語句,一類為 DDL語句(資料定義語言 (Data Definition Language)),他們是從來不會共用使用的,也就是每次執行都需要進行硬解析。還有一類就是DML語句(資料操縱語言),他們會根據情況選擇要麼進行硬解析,要麼進行軟解析。

 

DML:INSERT,UPDATE,DELETE,SELECT

DDL:CREATE,DROP,ALTER

 

 

一.  SQL 解析過程

 

Oracle對此SQL將進行幾個步驟的處理過程:

    1、語法檢查(syntax check): 檢查此sql的拼字是否文法。

    2、語義檢查(semantic check): 諸如檢查sql語句中的訪問對象是否存在及該使用者是否具備相應的許可權。

    3、對sql語句進行解析(prase): 利用內部演算法對sql進行解析,產生解析樹(parse tree)及執行計畫(execution plan)。

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

 

 

二. 解析過程詳解

 

2.1  文法檢測

判斷一條SQL語句的文法是否符合SQL的規範,比如執行:

SQL> selet * from emp;

我們就可以看出由於Select關鍵字少了一個“c”,這條語句就無法通過文法檢驗的步驟了。

 

 

2.2 語義檢查

文法正確的SQL語句在解析的第二個步驟就是判斷該SQL語句所訪問的表及列是否準確?使用者是否有許可權訪問或更改相應的表或列? 比如如下語句:

SQL> select * from emp;

select * from emp

*

ERROR at line 1:

ORA-00942: table or view does not exist

由於查詢使用者沒有可供訪問的emp對象,因此該SQL語句無法通過語義檢查。

 

 

2.3 解析(Parse)

 

  2.3.1 Parse主要分為三種:

    1、Hard Parse (硬解析)

    2、Soft Parse (軟解析)

    3、Soft Soft Parse(好像有些資料中並沒有將這個算在其中)

 

   Hard Parse: 就是上面提到的對提交的Sql完全重新從頭進行解析(當在Shared Pool中找不到時候將會進行此操作),總共有一下5個執行步驟:

    1:文法分析

    2:許可權與對象檢查

    3: 在共用池中檢查是否有完全相同的之前完全解析好的. 如果存在,直接跳過4和5,運行Sql, 此時算soft parse.

    4:選擇執行計畫

    5:產生執行計畫

 

註:建立解析樹、產生執行計畫對於sql的執行來說是開銷昂貴的動作,所以,應當極力避免硬解析,盡量使用軟解析。這就是在很多項目中,倡導開發設計人員對功能相同的代碼要努力保持代碼的一致性,以及要在程式中多使用綁定變數的原因。

 

Soft Parse: 就如果是在Shared Pool中找到了與之完全相同的Sql解析好的結果後會跳過Hard Parse中的後面的兩個步驟。

 

    Soft Soft Parse: 實際上是當設定了session_cursor_cache這個參數之後,Cursor被直接Cache在當前Session的PGA中的,在解析的時候只需要對其文法分析、權限物件分析之後就可以轉到PGA中尋找了,如果發現完全相同的Cursor,就可以直接去取結果了,也就就是實現了 Soft Soft Parse. 

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.