SQL處理的主要步驟
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將自動關閉遊標。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 資料庫查詢死鎖的處理步驟SQLServer資料庫
- 詳解資料處理的六步驟
- PrepareStatement物件進行批處理的典型步驟順序REST物件
- 優化 SQL 語句的步驟優化SQL
- 用SQL建立索引的方法步驟SQL索引
- Python文字預處理:步驟、使用工具及示例Python
- 【SQL】Oracle SQL處理的流程SQLOracle
- SSIS中使用事件處理程式的五個步驟(上)JE事件
- SSIS中使用事件處理程式的五個步驟(下)UJ事件
- bladeX物聯網平臺私庫操作處理步驟
- 關於人像後期處理進階的相關技術步驟
- Oracle SQL處理OracleSQL
- Win7系統開啟多核處理器的操作方法步驟Win7
- 1.3.3.4. 步驟3:啟動SQL*PlusSQL
- SQL隱碼攻擊之常見注入的步驟④SQL
- sql server對於日期的處理SQLServer
- 麒麟系統修改網路卡名步驟和網路卡佔用故障處理
- Serverless工作流並行步驟(type:foreach)怎麼做異常處理?Server並行
- kingbaseV8R6叢集常見問題處理步驟以及思路
- SQL Server 遷移至MySQL 關鍵步驟的梳理總結ServerMySql
- SQL隱碼攻擊的原理及一般步驟SQL
- 振弦採集儀的操作方法及資料處理技術的一般步驟
- Transact-SQL處理小數SQL
- (100天2小時第二十九天)數字影像處理的基本步驟
- 自然語言處理工具python呼叫hanlp的方法步驟自然語言處理PythonHanLP
- 使用Sql插入sde是ObjectId的處理方式SQLObject
- oracle客戶端安裝步驟—附圖形介面啟用失敗處理方法Oracle客戶端
- Java 註解與註解處理器基礎總結與實操步驟分析Java
- SQL中的常用的字串處理函式大全SQL字串函式
- win10電腦玩LOL提示“客戶端安全元件載入失敗”的處理步驟Win10客戶端元件
- 雲擴RPA研習社 | 解析流程開發主要步驟
- SQL Server 異常程式碼處理SQLServer
- 原生ajax的步驟?
- 需求分析的步驟
- 計算機伺服器中了halo勒索病毒怎麼處理,halo勒索病毒解密步驟計算機伺服器解密
- 那些年,我們處理過的SQL問題SQL
- Oracle sql 語句中帶有特殊的字元處理OracleSQL字元
- SQL稽核平臺 Archery v1.8.0 LDAP功能配置步驟SQLLDA
- 用物化檢視單行同步資料庫時,源表結構變化時的處理步驟資料庫