【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列3
減輕Shared Pool負載
Parse一次並執行多次
在OLTP型別的應用中,最好的方法是隻讓一個語句被解析一次,然後保持這個cursor的開啟狀態,在需要的時候重複執行它。這樣做的結果是每個語句只被Parse了一次(不管是soft parse還是hard parse)。顯然,總會有些語句很少被執行,所以作為一個開啟的cursor維護它們是一種浪費。
請注意一個session最多隻能使用引數:open_cursors定義的cursor數,保持cursor開啟會增加總體open cursors的數量。
OCI中開發者能直接控制cursor,在預編譯器中,HOLD_CURSOR引數控制cursor是否被保持開啟。
消除 Literal SQL
如果你有一個現有的應用程式,你可能沒法消除所有的literal SQL,但是你還是得設法消除其中一部分會產生問題的語句。從V$SQLAREA檢視可能找到適合轉為使用繫結變數的語句。下面的查詢列出SGA中有大量相似語句的SQL:
SELECT substr(sql_text,1,40) "SQL",
count(*) ,
sum(executions) "TotExecs"
FROM v$sqlarea
WHERE executions < 5
GROUP BY substr(sql_text,1,40)
HAVING count(*) > 30
ORDER BY 2
;
在10g以上的版本可以用下面的語句:
SET pages 10000SET linesize 250
column FORCE_MATCHING_SIGNATURE format 99999999999999999999999
WITH c AS
(SELECT FORCE_MATCHING_SIGNATURE,
COUNT(*) cnt
FROM v$sqlarea
WHERE FORCE_MATCHING_SIGNATURE!=0
GROUP BY FORCE_MATCHING_SIGNATURE
HAVING COUNT(*) > 20
)
,
sq AS
(SELECT sql_text ,
FORCE_MATCHING_SIGNATURE,
row_number() over (partition BY FORCE_MATCHING_SIGNATURE ORDER BY sql_id DESC) p
FROM v$sqlarea s
WHERE FORCE_MATCHING_SIGNATURE IN
(SELECT FORCE_MATCHING_SIGNATURE
FROM c
)
)
SELECT sq.sql_text ,
sq.FORCE_MATCHING_SIGNATURE,
c.cnt "unshared count"
FROM c,
sq
WHERE sq.FORCE_MATCHING_SIGNATURE=c.FORCE_MATCHING_SIGNATURE
AND sq.p =1
ORDER BY c.cnt DESC;
下面的查詢可以幫我們找到Invalidation較多的cursor:
invalidations
FROM v$sqlarea
ORDER BY invalidations DESC;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7192724/viewspace-772346/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列6優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列5優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列4優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列2優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列1優化
- Shared Pool優化和Library Cache Latch衝突優化優化
- 故障排除:Shared Pool優化和Library Cache Latch衝突優化優化
- 優化Shared Pool Latch與Library Cache Latch競爭優化
- shared pool library cache latch 競爭優化辦法優化
- oracle優化--shared_pool (3)Oracle優化
- 共享池之六:shared pool latch/ library cache latch /lock pin 簡介
- oracle優化--shared_pool (2)Oracle優化
- oracle優化--shared_pool (1)Oracle優化
- 深入理解shared pool共享池之library cache系列一
- latch:cache buffers chains的優化思路AI優化
- 深入理解shared pool共享池之library cache的library cache lock系列四
- 深入理解shared pool共享池之library cache的library cache pin系列三
- 深入理解shared pool共享池之library cache系列二
- oracle latch優化Oracle優化
- 等待模擬-library cache shared pool 硬解析
- latch:shared pool的一點理解
- Shared pool的library cache lock/pin及硬解析
- 共享池的調整與優化(Shared pool Tuning)優化
- Oracle Latch及latch衝突Oracle
- [20210520]11g shared pool latch與library cache mutex的簡單探究3.txtMutex
- shared pool之三:library cache結構/library cache object的結構-dump LibraryHandleObject
- Flush an Object Out The Library Cache [SGA] Using The DBMS_SHARED_POOLObject
- 深入理解shared pool共享池空間及library cache分配之ora-4031 系列一
- Oracle效能優化--Latch介紹Oracle優化
- Hexo系列3:部落格優化Hexo優化
- [20210520]11g shared pool latch與library cache mutex的簡單探究.txtMutex
- [20210521]11g shared pool latch與library cache mutex的簡單探究4.txtMutex
- 首屏優化系列(一)優化
- Buffer cache 的調整與優化(一)優化
- latch:library cache lock等待事件事件
- (mysql優化-3) 系統優化MySql優化
- cbc latch或cache buffer chains latch系列一AI
- 轉_診斷latch:shared pool等待事件事件