- 數據庫高效優化:架構、規范與SQL技巧
- 馬立和 高振嬌 韓鋒
- 564字
- 2020-08-03 16:49:22
5.1 解析步驟
圖5-1是Oracle官方文檔的中SQL解析步驟。我們看一下解析過程做了哪些操作。
圖5-1中涉及的命令及含義如下。
·Syntax Check:語法檢查。數據庫會檢查SQL語句的語法拼寫,以保證是其一個有效的SQL語句。常見的錯誤是拼寫錯誤,如將FROM寫成FORM。
·Semantic Check:語義檢查。數據庫會對SQL語句進行語義分析,其中包括對象的有效性、是否有訪問權限等。
·Shared Pool Check:數據庫首先將SQL文本轉化為ASCII字符,然后根據哈希算法計算其對應的值(就是對應于V$SQL.SQL_ID)。根據計算出的這個值到共享池中的一個區域(就是library cache)中找到對應的一塊結構(又稱bucket),然后比較bucket里是否存在該SQL語句。如果找到該語句,則返回對應的執行計劃(可能有多個,需要選擇一個)。如果沒有找到,則進入硬解析的過程。
·Hard Parse:即硬解析。如果數據庫無法在內存中找到這條語句,則需要經歷一個硬解析的過程。在這個過程中需要申請一塊內存空間(并通過名叫latch的結構保證不被別人訪問)。同時,需要訪問數據字典獲得對象必要的信息。
·Soft Parse:除去Hard Parse,都可以稱為Soft parse。
·Optimization:在這一階段,數據庫會根據很多因素由優化器生成最優的執行計劃。
·Row Source Generation:所謂“Row Source”,是指在上面的執行計劃中每一步采用什么樣的方法去關聯、獲得數據。Row Source可能對應于表、視圖、結果集、表關聯操作、分組操作等。最終結果是一棵樹的形態。
·Execution:這一步就是執行器根據Row Source樹的每一步去執行。

圖5-1 SQL 解析步驟
- Redis使用手冊
- 數據產品經理高效學習手冊:產品設計、技術常識與機器學習
- Unity 5.x Game AI Programming Cookbook
- Libgdx Cross/platform Game Development Cookbook
- 數據化網站運營深度剖析
- Remote Usability Testing
- Python金融實戰
- 企業級容器云架構開發指南
- SAS金融數據挖掘與建模:系統方法與案例解析
- 區域云計算和大數據產業發展:浙江樣板
- Web Services Testing with soapUI
- Scratch 2.0 Game Development HOTSHOT
- 碼上行動:利用Python與ChatGPT高效搞定Excel數據分析
- 數據時代的品牌智造
- SQL應用開發參考手冊