Oracle硬解析和軟解析的區別分析建站知識
導讀:1建站知識我們都知道在Oracle中每條SQL語句在執行之前都需要經過解析,這里面又分為軟解析和硬解析。在Oracle中存在兩種類型的SQL語句,一類為 DDL語句(數據seo網站優化軟件百度seo網站優化。
我們都知道在Oracle中每條SQL語句在執行之前都需要經過解析,這里面又分為軟解析和硬解析。在Oracle中存在兩種類型的SQL語句,一類為 DDL語句(數據定義語言),就是每次執行都需要進行硬解析。還有一類就是DML語句,他們會根據情況選擇要么進行硬解析,要么進行軟解析。
一、摘要
Oracle硬解析和軟解析是我們經常遇到的問題,所以需要考慮何時產生軟解析何時產生硬解析,如何判斷
SQL的執行過程
當發布一條SQL或PL/SQL命令時,Oracle會自動尋找該命令是否存在于共享池中來決定對當前的語句使用硬解析或軟解析。
通常情況下,SQL語句的執行過程如下:
Step1. SQL代碼的語法(語法的正確性)及語義檢查(對象的存在性與權限)。
Step2. 將SQL代碼的文本進行哈希得到哈希值。
Step3. 如果共享池中存在相同的哈希值,則對這個命令進一步判斷是否進行軟解析,否則到e步驟。
Step4. 對于存在相同哈希值的新命令行,其文本將與已存在的命令行的文本逐個進行比較。
這些比較包括大小寫,字符串是否一致,空格,注釋等,如果一致,則對其進行軟解析,轉到步驟Step6,無需再次硬解析。
否則到步驟Step5。
Step5. 硬解析,生成執行計劃。
Step6. 執行SQL代碼,返回結果。
二、軟解析
1.下面的三個查詢語句,不能使用相同的共享SQL區。盡管查詢的表對象使用了大小寫,但Oracle為其生成了不同的執行計劃
select * from emp; select * from Emp; select * from EMP;2.類似的情況,下面的查詢中,盡管其where子句empno的值不同,Oracle同樣為其生成了不同的執行計劃  seo網站優化;
select * from emp where empno=7369 select * from emp where empno=77883.在判斷是否使用硬解析時,所參照的對象及schema應該是相同的,如果對象相同,而schema不同,則需要使用硬解析,生成不同的執行計劃
sys@ASMDB> select owner,table_name from dba_tables where table_name like 'TB_OBJ%'; OWNER TABLE_NAME ------------------------------ ------------------------------ USR1 TB_OBJ --兩個對象的名字相同,當所有者不同 SCOTT TB_OBJ usr1@ASMDB> select * from tb_obj; scott@ASMDB> select * from tb_obj; --此時兩者都需要使用硬解析以及走不同的執行計劃聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-22 ,文章Oracle硬解析和軟解析的區別分析建站知識主要講述區別,標簽,Oracle硬解析和軟解析的區別分析建站知網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_4522.html