求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

Sql語句檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
  Sql語句

結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統; sql 語句就是對數據庫進行操作的一種語言。

簡介

服務器進程從用戶進程把信息接收到後,在PGA中就要此進程分配所需內存,存儲相關的信息,如在會話內存存儲相關的登錄信息等。服務器進程把這個sql語句的字符轉化為ASCII等效數字碼,接着這個ASCII碼被傳遞給一個HASH 函數,並返回一個hash 值,然後服務器進程將到shared pool中的library cache中去查找是否存在相同的hash值,如果存在,服務器進程將使用這條語句已在高速緩存在 SHARED POOL 的library cache 中的已分析過的執行計劃版本來執行。如果不存在,服務器進程將在CGA中,配合UGA內容對sql,進行語法分析,首先檢查語法的正確性,接着對語句中涉及的表,索引,視圖等對象進行解析,並對照數據字典檢查這些對象的名稱以及相關結構,並根據ORACLE 選用的優化模式以及數據字典中是否存在相應對象的統計數據和是否使用了存儲大綱來生成一個執行計劃或從存儲大綱中選用一個執行計劃,然後再用數據字典核對此用戶對相應對象的執行權限,最後生成一個編譯代碼。

評價

ORACLE 將這條 sql 語句的本身實際文本、HASH 值、編譯代碼、與此語名相關聯的任何統計數據和該語句的執行計劃緩存在 SHARED POOL 的 library cache中。服務器進程通過 SHARED POOL 鎖存器(shared pool latch)來申請可以向哪些共享 PL/SQL 區中緩存這此內容,也就是說被SHARED POOL 鎖存器鎖定的 PL/SQL 區中的塊不可被覆蓋,因為這些塊可能被其它進程所使用在 SQL 分析階段將用到 LIBRARY CACHE,從數據字典中核對表、視圖等結構的時候,需要將數據字典從磁盤讀入 LIBRARY CACHE,因此,在讀入之前也要使用LIBRARY CACHE 鎖存器(library cache pin,library cache lock)來申請用於緩存數據字典。到現在為止,這個 sql 語句已經被編譯成可執行的代碼了,但還不知道要操作哪些數據,所以服務器進程還要為這個 sql 準備預處理數據。[1]

參考文獻

  1. Sql語句搜狗