溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

V$SYSSTAT 小結(jié)

發(fā)布時(shí)間:2020-08-10 23:30:25 來(lái)源:ITPUB博客 閱讀:119 作者:weilihua2817 欄目:關(guān)系型數(shù)據(jù)庫(kù)

 V$SYSSTAT中包含多個(gè)統(tǒng)計(jì)項(xiàng),這部分介紹了一些關(guān)鍵的v$sysstat統(tǒng)計(jì)項(xiàng),在調(diào)優(yōu)方面相當(dāng)有用。下列按字母先后排序:

 

數(shù)據(jù)庫(kù)使用狀態(tài)的一些關(guān)鍵指標(biāo):

l         CPU used by this session:所有session的cpu占用量,不包括后臺(tái)進(jìn)程。這項(xiàng)統(tǒng)計(jì)的單位是百分之x秒.完全調(diào)用一次不超過(guò)10ms

l         db block changes:那部分造成SGA中數(shù)據(jù)塊變化的insert,update或delete操作數(shù) 這項(xiàng)統(tǒng)計(jì)可以大概看出整體數(shù)據(jù)庫(kù)狀態(tài)。在各項(xiàng)事務(wù)級(jí)別,這項(xiàng)統(tǒng)計(jì)指出臟緩存比率。

l         execute count:執(zhí)行的sql語(yǔ)句數(shù)量(包括遞歸sql)

l         logons current:當(dāng)前連接到實(shí)例的Sessions。如果當(dāng)前有兩個(gè)快照則取平均值。

l         logons cumulative:自實(shí)例啟動(dòng)后的總登陸次數(shù)。

l         parse count (hard):在shared pool中解析調(diào)用的未命中次數(shù)。當(dāng)sql語(yǔ)句執(zhí)行并且該語(yǔ)句不在shared pool或雖然在shared pool但因?yàn)閮烧叽嬖诓糠植町惗荒鼙皇褂脮r(shí)產(chǎn)生硬解析。如果一條sql語(yǔ)句原文與當(dāng)前存在的相同,但查詢表不同則認(rèn)為它們是兩條不同語(yǔ)句,則硬解析即會(huì)發(fā)生。硬解析會(huì)帶來(lái)cpu和資源使用的高昂開(kāi)銷(xiāo),因?yàn)樗枰猳racle在shared pool中重新分配內(nèi)存,然后再確定執(zhí)行計(jì)劃,最終語(yǔ)句才會(huì)被執(zhí)行。

l         parse count (total):解析調(diào)用總數(shù),包括軟解析和硬解析。當(dāng)session執(zhí)行了一條sql語(yǔ)句,該語(yǔ)句已經(jīng)存在于shared pool并且可以被使用則產(chǎn)生軟解析。當(dāng)語(yǔ)句被使用(即共享) 所有數(shù)據(jù)相關(guān)的現(xiàn)有sql語(yǔ)句(如最優(yōu)化的執(zhí)行計(jì)劃)必須同樣適用于當(dāng)前的聲明。這兩項(xiàng)統(tǒng)計(jì)可被用于計(jì)算軟解析命中率。

l         parse time cpu:總cpu解析時(shí)間(單位:10ms)。包括硬解析和軟解析。

l         parse time elapsed:完成解析調(diào)用的總時(shí)間花費(fèi)。

l         physical reads:OS blocks read數(shù)。包括插入到SGA緩存區(qū)的物理讀以及PGA中的直讀這項(xiàng)統(tǒng)計(jì)并非i/o請(qǐng)求數(shù)。

l         physical writes:從SGA緩存區(qū)被DBWR寫(xiě)到磁盤(pán)的數(shù)據(jù)塊以及PGA進(jìn)程直寫(xiě)的數(shù)據(jù)塊數(shù)量。

l         redo log space requests:在redo logs中服務(wù)進(jìn)程的等待空間,表示需要更長(zhǎng)時(shí)間的log switch。

l         redo size:redo發(fā)生的總次數(shù)(以及因此寫(xiě)入log buffer),以byte為單位。這項(xiàng)統(tǒng)計(jì)顯示出update活躍性。

l         session logical reads:邏輯讀請(qǐng)求數(shù)。

l         sorts (memory) and sorts (disk):sorts(memory)是適于在SORT_AREA_SIZE(因此不需要在磁盤(pán)進(jìn)行排序)的排序操作的數(shù)量。sorts(disk)則是由于排序所需空間太大,SORT_AREA_SIZE不能滿足而不得不在磁盤(pán)進(jìn)行排序操作的數(shù)量。這兩項(xiàng)統(tǒng)計(jì)通常用于計(jì)算in-memory sort ratio。

l         sorts (rows): 列排序總數(shù)。這項(xiàng)統(tǒng)計(jì)可被'sorts (total)'統(tǒng)計(jì)項(xiàng)除盡以確定每次排序的列。該項(xiàng)可指出數(shù)據(jù)卷和應(yīng)用特征。

l         table fetch by rowid:使用ROWID返回的總列數(shù)(由于索引訪問(wèn)或sql語(yǔ)句中使用了'where rowid=&rowid'而產(chǎn)生)

l         table scans (rows gotten):全表掃描中讀取的總列數(shù)

l         table scans (blocks gotten):全表掃描中讀取的總塊數(shù),不包括那些split的列。

l         user commits + user rollbacks:系統(tǒng)事務(wù)起用次數(shù)。當(dāng)需要計(jì)算其它統(tǒng)計(jì)中每項(xiàng)事務(wù)比率時(shí)該項(xiàng)可以被做為除數(shù)。例如,計(jì)算事務(wù)中邏輯讀,可以使用下列公式:session logical reads / (user commits + user rollbacks)。

 

注:SQL語(yǔ)句的解析有軟解析soft parse與硬解析hard parse之說(shuō),以下是5個(gè)步驟:

1:語(yǔ)法是否合法(sql寫(xiě)法)

2:語(yǔ)義是否合法(權(quán)限,對(duì)象是否存在)

3:檢查該sql是否在公享池中存在

-- 如果存在,直接跳過(guò)4和5,運(yùn)行sql. 此時(shí)算soft parse

4:選擇執(zhí)行計(jì)劃

5:產(chǎn)生執(zhí)行計(jì)劃

-- 如果5個(gè)步驟全做,這就叫hard parse.

 

注意物理I/O

 

  oracle報(bào)告物理讀也許并未導(dǎo)致實(shí)際物理磁盤(pán)I/O操作。這完全有可能因?yàn)槎鄶?shù)操作系統(tǒng)都有緩存文件,可能是那些塊在被讀取。塊也可能存于磁盤(pán)或控制級(jí)緩存以再次避免實(shí)際I/O。Oracle報(bào)告有物理讀也許僅僅表示被請(qǐng)求的塊并不在緩存中。

 

由V$SYSSTAT得出實(shí)例效率比(Instance Efficiency Ratios)

 

下列是些典型的instance efficiency ratios 由v$sysstat數(shù)據(jù)計(jì)算得來(lái),每項(xiàng)比率值應(yīng)該盡可能接近1:

 

l         Buffer cache hit ratio:該項(xiàng)顯示buffer cache大小是否合適。

公式:1-((physical reads-physical reads direct-physical reads direct (lob)) / session logical reads)

執(zhí)行:

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';

 

l         Soft parse ratio:這項(xiàng)將顯示系統(tǒng)是否有太多硬解析。該值將會(huì)與原始統(tǒng)計(jì)數(shù)據(jù)對(duì)比以確保精確。例如,軟解析率僅為0.2則表示硬解析率太高。不過(guò),如果總解析量(parse count total)偏低,這項(xiàng)值可以被忽略。

公式:1 - ( parse count (hard) / parse count (total) )

執(zhí)行:

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)';

 

l         In-memory sort ratio:該項(xiàng)顯示內(nèi)存中完成的排序所占比例。最理想狀態(tài)下,在OLTP系統(tǒng)中,大部分排序不僅小并且能夠完全在內(nèi)存里完成排序。

公式:sorts (memory) / ( sorts (memory) + sorts (disk) )

執(zhí)行:

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)';

 

l         Parse to execute ratio:在生產(chǎn)環(huán)境,最理想狀態(tài)是一條sql語(yǔ)句一次解析多數(shù)運(yùn)行。

公式:1 - (parse count/execute count)

執(zhí)行:

select 1-(a.value/b.value)

 from v$sysstat a,v$sysstat b

 where a.name='parse count (total)' and b.name='execute count';

 

l         Parse CPU to total CPU ratio:該項(xiàng)顯示總的CPU花費(fèi)在執(zhí)行及解析上的比率。如果這項(xiàng)比率較低,說(shuō)明系統(tǒng)執(zhí)行了太多的解析。

公式:1 - (parse time cpu / CPU used by this session)

執(zhí)行:

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';

 

l         Parse time CPU to parse time elapsed:通常,該項(xiàng)顯示鎖競(jìng)爭(zhēng)比率。這項(xiàng)比率計(jì)算

是否時(shí)間花費(fèi)在解析分配給CPU進(jìn)行周期運(yùn)算(即生產(chǎn)工作)。解析時(shí)間花費(fèi)不在CPU周期運(yùn)算通常表示由于鎖競(jìng)爭(zhēng)導(dǎo)致了時(shí)間花費(fèi)

公式:parse time cpu / parse time elapsed

執(zhí)行:

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獲取負(fù)載間檔(Load Profile)數(shù)據(jù)

 

  負(fù)載間檔是監(jiān)控系統(tǒng)吞吐量和負(fù)載變化的重要部分,該部分提供如下每秒和每個(gè)事務(wù)的統(tǒng)計(jì)信息:logons cumulative, parse count (total), parse count (hard), executes, physical reads, physical writes, block changes, and redo size.

 

  被格式化的數(shù)據(jù)可檢查'rates'是否過(guò)高,或用于對(duì)比其它基線數(shù)據(jù)設(shè)置為識(shí)別system profile在期間如何變化。例如,計(jì)算每個(gè)事務(wù)中block changes可用如下公式:

db block changes / ( user commits + user rollbacks )

執(zhí)行:

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';

 

 

其它計(jì)算統(tǒng)計(jì)以衡量負(fù)載方式,如下:

l         Blocks changed for each read:這項(xiàng)顯示出block changes在block reads中的比例。它將指出是否系統(tǒng)主要用于只讀訪問(wèn)或是主要進(jìn)行諸多數(shù)據(jù)操作(如:inserts/updates/deletes)

公式:db block changes / session logical reads

執(zhí)行:

select a.value/b.value

 from v$sysstat a,v$sysstat b

 where a.name='db block changes' and

         b.name='session logical reads' ;

 

l         Rows for each sort:

公式:sorts (rows) / ( sorts (memory) + sorts (disk) )

執(zhí)行:

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)';

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI