Oracle中效能檢視V$SYSSTAT
Oracle中效能檢視V$SYSSTAT
===================================================================================================
SELECT SUM(DECODE(name, 'physical reads', value, 0)),
SUM(DECODE(name, 'physical reads direct', value, 0)),
SUM(DECODE(name, 'physical reads direct (lob)', value, 0)),
SUM(DECODE(name, 'session logical reads', value, 0))
FROM sys.v_$sysstat
===================================================================================================
V$SYSSTAT中包含多個統計項,這部分介紹了一些關鍵的v$sysstat統計項,在調優方面相當有用。
資料庫使用狀態的一些關鍵指標:
l CPU used by this session:所有session的cpu佔用量,不包括後臺程式。這項統計的單位是百分之x秒.完全呼叫一次不超過10ms
2 db block changes:那部分造成SGA中資料塊變化的insert,update或delete運算元 這項統計可以大概看出整體資料庫狀態。
在各項事務級別,這項統計指出髒快取比率。
3 execute count:執行的sql語句數量(包括遞迴sql)
4 logons current:當前連線到例項的Sessions。如果當前有兩個快照則取平均值。
5 logons cumulative:自例項啟動後的總登陸次數。
6 parse count (hard):在shared pool中解析呼叫的未命中次數。當sql語句執行並且該語句不在shared pool或雖然在shared pool
但因為兩者存在部分差異而不能被使用時產生硬解析。如果一條sql語句原文與當前存在的相同,但查詢表不
同則認為它們是兩條不同語句,則硬解析即會發生。硬解析會帶來cpu和資源使用的高昂開銷,因為它需要
oracle在shared pool中重新分配記憶體,然後再確定執行計劃,最終語句才會被執行。
7 parse count (total):解析呼叫總數,包括軟解析和硬解析。當session執行了一條sql語句,該語句已經存在於shared pool並且可
以被使用則產生軟解析。當語句被使用(即共享) 所有資料相關的現有sql語句(如最最佳化的執行計劃)必須同
樣適用於當前的宣告。這兩項統計可被用於計算軟解析命中率。
8 parse time cpu:總cpu解析時間(單位:10ms)。包括硬解析和軟解析。
9 parse time elapsed:完成解析呼叫的總時間花費。
l0 physical reads:OS blocks read數。包括插入到SGA快取區的物理讀以及PGA中的直讀這項統計並非i/o請求數。
l1 physical writes:從SGA快取區被DBWR寫到磁碟的資料塊以及PGA程式直寫的資料塊數量。
l2 redo log space requests:在redo logs中服務程式的等待空間,表示需要更長時間的log switch。
l3 redo size:redo發生的總次數(以及因此寫入log buffer),以byte為單位。這項統計顯示出update活躍性。
l4 session logical reads:邏輯讀請求數。
l5 sorts (memory) and sorts (disk):sorts(memory)是適於在SORT_AREA_SIZE(因此不需要在磁碟進行排序)的排序操作的數量。
sorts(disk)則是由於排序所需空間太大,SORT_AREA_SIZE不能滿足而不得不在磁碟進行
排序操作的數量。這兩項統計通常用於計算in-memory sort ratio。
l6 sorts (rows): 列排序總數。這項統計可被'sorts (total)'統計項除盡以確定每次排序的列。該項可指出資料卷和應用特徵。
l7 table fetch by rowid:使用ROWID返回的總列數(由於索引訪問或sql語句中使用了'where rowid=&rowid'而產生)
l8 table scans (rows gotten):全表掃描中讀取的總列數
l9 table scans (blocks gotten):全表掃描中讀取的總塊數,不包括那些split的列。
20 user commits + user rollbacks:系統事務起用次數。當需要計算其它統計中每項事務比率時該項可以被做為除數。例如,
計算事務中邏輯讀,可以使用下列公式:session logical reads / (user commits + user rollbacks)。
注:SQL語句的解析有軟解析soft parse與硬解析hard parse之說,以下是5個步驟:
1:語法是否合法(sql寫法)
2:語義是否合法(許可權,物件是否存在)
3:檢查該sql是否在公享池中存在
-- 如果存在,直接跳過4和5,執行sql. 此時算soft parse
4:選擇執行計劃
5:產生執行計劃
-- 如果5個步驟全做,這就叫hard parse.
注意物理I/O
oracle報告物理讀也許並未導致實際物理磁碟I/O操作。這完全有可能因為多數作業系統都有快取檔案,可能是那些塊在被讀取。
塊也可能存於磁碟或控制級快取以再次避免實際I/O。Oracle報告有物理讀也許僅僅表示被請求的塊並不在快取中。
由V$SYSSTAT得出例項效率比(Instance Efficiency Ratios)
===================================================================================================
下列是些典型的instance efficiency ratios 由v$sysstat資料計算得來,每項比率值應該儘可能接近1:
**********************************************************
Buffer cache hit ratio:該項顯示buffer cache大小是否合適。
公式:((physical reads-physical reads direct-physical reads direct (lob)) / session logical reads)
執行:
select 1-((a.value-b.value-c.value)/d.value)
from v$sysstat a,v$sysstat b,v$sysstat c,v$sysstat d
where a.name='physical reads' and
b.name='physical reads direct' and
c.name='physical reads direct (lob)' and
d.name='session logical reads';
***********************************************************
Soft parse ratio:這項將顯示系統是否有太多硬解析。該值將會與原始統計資料對比以確保精確。例如,軟解析率僅為0.2則表示硬解析率太高。
不過,如果總解析量(parse count total)偏低,這項值可以被忽略。
公式:( parse count (hard) / parse count (total) )
執行:
select 1-(a.value/b.value)
from v$sysstat a,v$sysstat b
Where a.name='parse count (hard)' and b.name='parse count (total)';
***********************************************************
In-memory sort ratio:該項顯示記憶體中完成的排序所佔比例。最理想狀態下,在OLTP系統中,大部分排序不僅小並且能夠完全在記憶體裡完成排序。
公式:sorts (memory) / ( sorts (memory) + sorts (disk) )
執行:
select a.value/(b.value+c.value)
from v$sysstat a,v$sysstat b,v$sysstat c
where a.name='sorts (memory)' and
b.name='sorts (memory)' and c.name='sorts (disk)';
***********************************************************
Parse to execute ratio:在生產環境,最理想狀態是一條sql語句一次解析多數執行。
公式:(parse count/execute count)
執行:
select 1-(a.value/b.value)
from v$sysstat a,v$sysstat b
where a.name='parse count (total)' and b.name='execute count';
***********************************************************
Parse CPU to total CPU ratio:該項顯示總的CPU花費在執行及解析上的比率。如果這項比率較低,說明系統執行了太多的解析。
公式: (parse time cpu / CPU used by this session)
執行:
select 1-(a.value/b.value)
from v$sysstat a,v$sysstat b
where a.name='parse time cpu' and
b.name='CPU used by this session';
***********************************************************
Parse time CPU to parse time elapsed:通常,該項顯示鎖競爭比率。這項比率計算
是否時間花費在解析分配給CPU進行週期運算(即生產工作)。解析時間花費不在CPU週期運算通常表示由於鎖競爭導致了時間花費
公式:parse time cpu / parse time elapsed
執行:
select a.value/b.value
from v$sysstat a,v$sysstat b
where a.name='parse time cpu' and b.name='parse time elapsed';
***********************************************************
從V$SYSSTAT獲取負載間檔(Load Profile)資料
負載間檔是監控系統吞吐量和負載變化的重要部分,該部分提供如下每秒和每個事務的統計資訊:
logons cumulative, parse count (total), parse count (hard), executes, physical reads, physical writes, block changes, and redo size.
被格式化的資料可檢查'rates'是否過高,或用於對比其它基線資料設定為識別system profile在期間如何變化。
例如,計算每個事務中block changes可用如下公式:
db block changes / ( user commits + user rollbacks )
執行:
select a.value/(b.value+c.value)
from v$sysstat a,v$sysstat b,v$sysstat c
where a.name='db block changes' and
b.name='user commits' and c.name='user rollbacks';
***********************************************************
其它計算統計以衡量負載方式,如下:
Blocks changed for each read:這項顯示出block changes在block reads中的比例。它將指出是否系統主要用於只讀訪問或是主要進行諸多資料操作
(如:inserts/updates/deletes)
公式:db block changes / session logical reads
執行:
select a.value/b.value
from v$sysstat a,v$sysstat b
where a.name='db block changes' and
b.name='session logical reads' ;
***********************************************************
Rows for each sort:
公式:sorts (rows) / ( sorts (memory) + sorts (disk) )
執行:
select a.value/(b.value+c.value)
from v$sysstat a,v$sysstat b,v$sysstat c
where a.name='sorts (rows)' and
b.name='sorts (memory)' and c.name='sorts (disk)';
===================================================================================================
SELECT SUM(DECODE(name, 'physical reads', value, 0)),
SUM(DECODE(name, 'physical reads direct', value, 0)),
SUM(DECODE(name, 'physical reads direct (lob)', value, 0)),
SUM(DECODE(name, 'session logical reads', value, 0))
FROM sys.v_$sysstat
===================================================================================================
V$SYSSTAT中包含多個統計項,這部分介紹了一些關鍵的v$sysstat統計項,在調優方面相當有用。
資料庫使用狀態的一些關鍵指標:
l CPU used by this session:所有session的cpu佔用量,不包括後臺程式。這項統計的單位是百分之x秒.完全呼叫一次不超過10ms
2 db block changes:那部分造成SGA中資料塊變化的insert,update或delete運算元 這項統計可以大概看出整體資料庫狀態。
在各項事務級別,這項統計指出髒快取比率。
3 execute count:執行的sql語句數量(包括遞迴sql)
4 logons current:當前連線到例項的Sessions。如果當前有兩個快照則取平均值。
5 logons cumulative:自例項啟動後的總登陸次數。
6 parse count (hard):在shared pool中解析呼叫的未命中次數。當sql語句執行並且該語句不在shared pool或雖然在shared pool
但因為兩者存在部分差異而不能被使用時產生硬解析。如果一條sql語句原文與當前存在的相同,但查詢表不
同則認為它們是兩條不同語句,則硬解析即會發生。硬解析會帶來cpu和資源使用的高昂開銷,因為它需要
oracle在shared pool中重新分配記憶體,然後再確定執行計劃,最終語句才會被執行。
7 parse count (total):解析呼叫總數,包括軟解析和硬解析。當session執行了一條sql語句,該語句已經存在於shared pool並且可
以被使用則產生軟解析。當語句被使用(即共享) 所有資料相關的現有sql語句(如最最佳化的執行計劃)必須同
樣適用於當前的宣告。這兩項統計可被用於計算軟解析命中率。
8 parse time cpu:總cpu解析時間(單位:10ms)。包括硬解析和軟解析。
9 parse time elapsed:完成解析呼叫的總時間花費。
l0 physical reads:OS blocks read數。包括插入到SGA快取區的物理讀以及PGA中的直讀這項統計並非i/o請求數。
l1 physical writes:從SGA快取區被DBWR寫到磁碟的資料塊以及PGA程式直寫的資料塊數量。
l2 redo log space requests:在redo logs中服務程式的等待空間,表示需要更長時間的log switch。
l3 redo size:redo發生的總次數(以及因此寫入log buffer),以byte為單位。這項統計顯示出update活躍性。
l4 session logical reads:邏輯讀請求數。
l5 sorts (memory) and sorts (disk):sorts(memory)是適於在SORT_AREA_SIZE(因此不需要在磁碟進行排序)的排序操作的數量。
sorts(disk)則是由於排序所需空間太大,SORT_AREA_SIZE不能滿足而不得不在磁碟進行
排序操作的數量。這兩項統計通常用於計算in-memory sort ratio。
l6 sorts (rows): 列排序總數。這項統計可被'sorts (total)'統計項除盡以確定每次排序的列。該項可指出資料卷和應用特徵。
l7 table fetch by rowid:使用ROWID返回的總列數(由於索引訪問或sql語句中使用了'where rowid=&rowid'而產生)
l8 table scans (rows gotten):全表掃描中讀取的總列數
l9 table scans (blocks gotten):全表掃描中讀取的總塊數,不包括那些split的列。
20 user commits + user rollbacks:系統事務起用次數。當需要計算其它統計中每項事務比率時該項可以被做為除數。例如,
計算事務中邏輯讀,可以使用下列公式:session logical reads / (user commits + user rollbacks)。
注:SQL語句的解析有軟解析soft parse與硬解析hard parse之說,以下是5個步驟:
1:語法是否合法(sql寫法)
2:語義是否合法(許可權,物件是否存在)
3:檢查該sql是否在公享池中存在
-- 如果存在,直接跳過4和5,執行sql. 此時算soft parse
4:選擇執行計劃
5:產生執行計劃
-- 如果5個步驟全做,這就叫hard parse.
注意物理I/O
oracle報告物理讀也許並未導致實際物理磁碟I/O操作。這完全有可能因為多數作業系統都有快取檔案,可能是那些塊在被讀取。
塊也可能存於磁碟或控制級快取以再次避免實際I/O。Oracle報告有物理讀也許僅僅表示被請求的塊並不在快取中。
由V$SYSSTAT得出例項效率比(Instance Efficiency Ratios)
===================================================================================================
下列是些典型的instance efficiency ratios 由v$sysstat資料計算得來,每項比率值應該儘可能接近1:
**********************************************************
Buffer cache hit ratio:該項顯示buffer cache大小是否合適。
公式:((physical reads-physical reads direct-physical reads direct (lob)) / session logical reads)
執行:
select 1-((a.value-b.value-c.value)/d.value)
from v$sysstat a,v$sysstat b,v$sysstat c,v$sysstat d
where a.name='physical reads' and
b.name='physical reads direct' and
c.name='physical reads direct (lob)' and
d.name='session logical reads';
***********************************************************
Soft parse ratio:這項將顯示系統是否有太多硬解析。該值將會與原始統計資料對比以確保精確。例如,軟解析率僅為0.2則表示硬解析率太高。
不過,如果總解析量(parse count total)偏低,這項值可以被忽略。
公式:( parse count (hard) / parse count (total) )
執行:
select 1-(a.value/b.value)
from v$sysstat a,v$sysstat b
Where a.name='parse count (hard)' and b.name='parse count (total)';
***********************************************************
In-memory sort ratio:該項顯示記憶體中完成的排序所佔比例。最理想狀態下,在OLTP系統中,大部分排序不僅小並且能夠完全在記憶體裡完成排序。
公式:sorts (memory) / ( sorts (memory) + sorts (disk) )
執行:
select a.value/(b.value+c.value)
from v$sysstat a,v$sysstat b,v$sysstat c
where a.name='sorts (memory)' and
b.name='sorts (memory)' and c.name='sorts (disk)';
***********************************************************
Parse to execute ratio:在生產環境,最理想狀態是一條sql語句一次解析多數執行。
公式:(parse count/execute count)
執行:
select 1-(a.value/b.value)
from v$sysstat a,v$sysstat b
where a.name='parse count (total)' and b.name='execute count';
***********************************************************
Parse CPU to total CPU ratio:該項顯示總的CPU花費在執行及解析上的比率。如果這項比率較低,說明系統執行了太多的解析。
公式: (parse time cpu / CPU used by this session)
執行:
select 1-(a.value/b.value)
from v$sysstat a,v$sysstat b
where a.name='parse time cpu' and
b.name='CPU used by this session';
***********************************************************
Parse time CPU to parse time elapsed:通常,該項顯示鎖競爭比率。這項比率計算
是否時間花費在解析分配給CPU進行週期運算(即生產工作)。解析時間花費不在CPU週期運算通常表示由於鎖競爭導致了時間花費
公式:parse time cpu / parse time elapsed
執行:
select a.value/b.value
from v$sysstat a,v$sysstat b
where a.name='parse time cpu' and b.name='parse time elapsed';
***********************************************************
從V$SYSSTAT獲取負載間檔(Load Profile)資料
負載間檔是監控系統吞吐量和負載變化的重要部分,該部分提供如下每秒和每個事務的統計資訊:
logons cumulative, parse count (total), parse count (hard), executes, physical reads, physical writes, block changes, and redo size.
被格式化的資料可檢查'rates'是否過高,或用於對比其它基線資料設定為識別system profile在期間如何變化。
例如,計算每個事務中block changes可用如下公式:
db block changes / ( user commits + user rollbacks )
執行:
select a.value/(b.value+c.value)
from v$sysstat a,v$sysstat b,v$sysstat c
where a.name='db block changes' and
b.name='user commits' and c.name='user rollbacks';
***********************************************************
其它計算統計以衡量負載方式,如下:
Blocks changed for each read:這項顯示出block changes在block reads中的比例。它將指出是否系統主要用於只讀訪問或是主要進行諸多資料操作
(如:inserts/updates/deletes)
公式:db block changes / session logical reads
執行:
select a.value/b.value
from v$sysstat a,v$sysstat b
where a.name='db block changes' and
b.name='session logical reads' ;
***********************************************************
Rows for each sort:
公式:sorts (rows) / ( sorts (memory) + sorts (disk) )
執行:
select a.value/(b.value+c.value)
from v$sysstat a,v$sysstat b,v$sysstat c
where a.name='sorts (rows)' and
b.name='sorts (memory)' and c.name='sorts (disk)';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29500582/viewspace-1328069/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle v$sysstat效能檢視Oracle
- Oracle動態效能檢視學習筆記(1)_v$sysstatOracle筆記
- v$sesstat,v$mystat,v$statname和v$sysstat檢視簡介
- 【Oracle九大效能檢視】之9.v$sysstat_所有instance的統計資訊Oracle
- 授權某使用者,檢視動態效能檢視的許可權(如v$latch,v$lock,v$sqlarea,v$sql,v$sysstat)SQL
- 動態效能表V$sysstat
- (轉)學習Oracle動態效能表-(4)-V$SYSSTATOracle
- 【Oracle九大效能檢視】之6.v$process檢視Oracle
- Oracle動態效能檢視學習之v$sqltext & v$sqlareaOracleSQL
- oracle效能檢視Oracle
- 學習動態效能表(一)--v$sysstat
- 系統狀態檢視工具Sysstat
- (轉)Oracle動態效能檢視學習之v$processOracle
- Oracle動態效能檢視學習之 V$ROLLSTAT -- 轉Oracle
- V$PGASTAT動態效能檢視AST
- Oracle動態效能檢視學習之v$lock & v$locked_objectOracleObject
- Oracle日常效能檢視Oracle
- Oracle檢視:常用動態效能檢視Oracle
- 【Oracle九大效能檢視】之2.v$sqlarea_查效能SQLOracleSQL
- Oracle常用的V$檢視Oracle
- Oracle 等待事件V$檢視Oracle事件
- Oracle動態效能檢視學習筆記(3)_v$undostatOracle筆記
- Oracle動態效能檢視學習筆記(4)_v$rollstatOracle筆記
- Oracle動態效能檢視學習筆記(6)_v$filestatOracle筆記
- Oracle動態效能檢視學習筆記(7)_v$sessionOracle筆記Session
- Oracle動態效能檢視之v$session_longops ztOracleSessionGo
- 效能檢視 V$Session_LONGOPSSessionGo
- Oracle動態效能檢視學習筆記(2)_v$sesstat_v$mystat_v$statnameOracle筆記
- Oracle動態效能檢視學習筆記(4)_v$waitstatOracle筆記AI
- Oracle動態效能檢視學習筆記(8)_v$waitstatOracle筆記AI
- oracle V$PGASTAT檢視記錄OracleAST
- 從oracle v$version檢視中查詢os的資訊Oracle
- v$sysstat和v$sesstat區別
- (轉)Oracle 動態效能檢視Oracle
- (轉)Oracle動態效能檢視學習之V$DB_OBJECT_CACHEOracleObject
- Oracle動態效能檢視學習筆記(9)_v$system_eventOracle筆記
- 【Oracle九大效能檢視】之3.v$session_關於與其它效能檢視表聯合查問題SQLOracleSessionSQL
- Oracle的v$動態檢視 收藏Oracle