Oracle 硬解析查詢

2022-04-12 07:49:10 字數 1149 閱讀 1907

--

硬解析的 parse count (hard)

select

*from v$sysstat where name like

'%parse%

';

select a.value,b.name from

v$mystat a, v$statname b

where a.statistic#=b.statistic# and b.name like

'%parse%';

select

*from

v$sqlarea;

select sql_id,sql_text,executions,last_load_time from v$sqlarea --

>首次查詢後在v$sqlarea儲存父游標且執行次數executions為1

where sql_text like

'%dddddd%

'and last_load_time > trunc(sysdate-1/

24) order

by last_load_time desc;

編碼硬解析的改進方法

1.更改引數cursor_sharing

引數cursor_sharing決定了何種型別的sql能夠使用相同的sql area

cursor_sharing

=

exact

--只有當發布的sql語句與快取中的語句完全相同時才用已有的執行計畫。

force --

如果sql語句是字面量,則迫使optimizer始終使用已有的執行計畫,無論已有的執行計畫是不是最佳的。

similar --

如果sql語句是字面量,則只有當已有的執行計畫是最佳時才使用它,如果已有執行計畫不是最佳則重新對這個sql

--語句進行分析來制定最佳執行計畫。

可以基於不同的級別來設定該引數,如alter session, alter system

alter system set cursor_sharing=exact scope=both;
alter

system flush shared_pool;

Oracle硬解析 軟解析 軟軟解析 理解

硬解析 library cache 中不存在父游標或者存在父游標,但是沒有子游標 軟解析 library cache中存在父游標 子游標 軟軟解析 會話pga中存在session cursor 一條新的sql查詢,開始硬解析,會先將sql語句經過ascii轉換,通過hash演算法去遍歷library...

Oracle的硬解析和軟解析

提到軟解析 soft parse 和硬解析 hard parse 就不能不說一下oracle對sql的處理過程。當你發出一條sql語句交付oracle,在執行和獲取結果前,oracle對此sql將進行幾個步驟的處理過程 1 語法檢查 syntax check 檢查此sql的拼寫是否語法。2 語義檢查...

Oracle的硬解析和軟解析

提到軟解析 soft prase 和硬解析 hard prase 就不能不說一下oracle對sql的處理過程。當你發出一條sql語句交付oracle,在執行和獲取結果前,oracle對此sql將進行幾個步驟的處理過程 1 語法檢查 syntax check 檢查此sql的拼寫是否語法。2 語義檢查...