Oracle 檢查命中率的SQL

 在數據庫啓動2小時後,可以通過以下SQL來測試數據庫性能

 

1.  緩衝區命中率:

緩衝區命中率表示在不需要進行磁盤訪問的情況下在內存結構中找到常用數據塊的頻率

 

select (1-(sum(decode(name, 'physical reads',value,0))/(sum(decode(name, 'db block gets',value,0)) 
         +sum(decode(name,'consistent gets',value,0))))) * 100 "Hit Ratio"
         from v$sysstat;

大於98%爲最佳

 

2.數據字典緩存命中率:

數據字典緩存命中率顯示了對數據字典和其他對象的內存讀操作所佔的百分比。

 

select (1-(sum(getmisses)/sum(gets))) * 100 "Hit Ratio" from v$rowcache;

大於98%爲最佳


3.庫緩存命中率:

庫緩存命中率顯示了對實際語句和PL/SQL對象的內存讀操作所佔的百分比。注意,很高的命中率並不總是一件好事。

 

select Sum(Pins)/(Sum(Pins) + Sum(Reloads)) * 100 "Hit Ratio" from V$LibraryCache;

大於98%爲最佳

 

4.PGA內存排序命中率

自動PGA內存管理簡化了分配PGA內存的方法。Oracle動態調整工作區PGA內存的大小(以SGA內存大小的20%爲基礎)。在自動PGA內存管理模式下運行時,所有會話的工作區大小都是自動的。實例中活動工作區可用的PGA內存總量自動由SORT_AREA_SIZE或PGA _ AGGREGATE_ TARGET(首選)初始化參數導出。PGA內存排序率的值應該大於98%。依據初始化參數PGA_AGGREGATE_TARGET(或者用於向後兼容的SORT _AREA _ SIZE)的值,用戶排序可能在內存或者在指定的臨時表空間中的磁盤上完成,如果這個初始化參數不是太高的話。

 

select a.value "Disk Sorts", b.value "Memory Sorts",round((100*b.value)/decode((a.value+b.value),0,1,(a.value+b.value)),2)"Pct Memory Sorts" from v$sysstat a, v$sysstat b where   a.name = 'sorts (disk)'and b.name = 'sorts (memory)';

 

5. 空閒的數據緩衝區的比例

 

從您首次啓動Oracle數據庫的那一天開始,用戶們的查詢就開始使用內存。空閒的記錄數除以X$BH表中的記錄總數(即所分配的數據塊緩衝區的總數)就得到這個百分比。同時請注意,您必須以SYS的權限來運行該查詢。此外,擁有衆多的空閒緩衝區並不一定是就最佳環境。5%-10% 爲最佳。當空閒比例高於25%時,數據緩衝區設置得太大了,可能會浪費資源。

 

select decode(state,0, 'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'),3, 'BEING USED', state) "BLOCK STATUS",count(*) from x$bh group by decode(state,0,'FREE',1,decode(lrba_seq,0,'AVAILABLE','BEING USED'),3, 'BEING USED', state);

 

6. 最浪費內存的前10個語句佔所有語句的比例


在沒有調整的情況下,大多數系統中10個最常使用的SQL語句的訪問量佔了整個系統中內存讀操作的50%以上。本節測量了最影響性能的代碼對整個系統所造成危害的嚴重性,以百分比表示。

 

select sum(pct_bufgets) "Percent" from (select rank() over ( order by buffer_gets desc ) as rank_bufgets,to_char(100 * ratio_to_report(buffer_gets) over (),'999.99') pct_bufgets from v$sqlarea ) where rank_bufgets < 11;

小於5%爲最佳。

 

7.調整濫用磁盤讀操作的主要語句


我發現在沒有作調整的情況下,在絕大多數的系統中,訪問量佔前25位的語句的磁盤讀操作將佔用整個系統所有磁盤和/或內存讀操作的75%。

 

select disk_reads, substr(sql_text,1,4000) from v$sqlarea  order by disk_reads desc;


8.表和與它們相關聯的索引應當放置在不同的物理磁盤上,以便減少文件I/O。


以上測試也可以通過AWR和STATSPACK來查看. 在分析結果中,我們首先要看的十項內容:
1. 首要的5個等待時間(定時事件)
2. 負載簡檔(Load profile)
3. 實例效率點擊率(Instance efficiency hit ratios)
4. 等待時間(Wait events)
5. 閂鎖等待(Latch waits)
6. 首要的SQL(Top SQL)
7. 實例活動(Instance activity)
8. 文件I/0和段統計數據(File I/0 and segement statistics)
9. 內存分配(Memory allocation)
10.緩衝區等待(Buffer waits)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章