shared pool主要由保存數據字典的data_dictionary和保存SQL和PL/SQL代碼和執行計劃的library cache組成 。還包括其它供系統不同特
shared pool主要由保存數據字典的data_dictionary和保存SQL和PL/SQL代碼和執行計劃的library cache組成 。還包括其它供系統不同特性和技術使用的若干緩沖區,如為shared server模式提供的UGA等。
優化shared pool的思路:
1)根據設置經驗,例如,可設置shared_pool_size=sga_target*(10%~15%)。
2)重點關注保存SQL和PL/SQL代碼和執行計劃的library cache相關指標。查看AWR報告Load Profile部分,分析Hard Parses/s等指標。分析Instance Efficiency Percentages (Target 100%)中Library Hit %、Execute to Parse %、Soft Parse %等
需要關注的等待事件:
Latch:library cache
Latch:shared pool
3)查看Time Model Statistics中與shared pool相關指標(parse time elapsed與hard parse elapsed time)。
如果hard parse elapsed time所占比例較高,說明應用的語句共享性存在嚴重問題。
優化方法:
1)評估語句共享性
Execute to Parse %=(execute次數-Parse次數)/Execute次數*100%
如果Execute to Parse %太低,說明解析次數非常高,系統整體共享性差。一般該指標達到70%以上,就說明語句共享性不錯。
AWR報告中Library Hit %、Soft Parse %和Hard Parses/s。Parse包含Hard Parse與Soft Parse次數,但我們應關注Hard Parses。
查詢非共享的sql語句(執行次數為1):
select sql_text from v$sqlarea where executions=1 order by upper(sql_text);
2)通過shared pool advisory設置合理的shared_pool_size。也可以通過設置shared_pool_reserved_size參數,使一些比較大的PL/SQL對象常駐內存中,減少shared pool出現碎片的可能性。
3)合理設置large_pool_size參數
large pool緩沖區用于備份恢復操作、并行處理、ASM、共享連接模式、模擬異步I/O操作等場景,應合理設置large_pool_size以避免使用shared pool緩沖區,加劇shared pool緩沖區空間的緊張和產生碎片的可能性。
注意:并不是所有的sql都需要共享,對于統計報表類sql因其單筆事務的資源消耗大,并發量不高的特點,應該保證其執行計劃的最優,這時候不用綁定變量。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com