性能调优OracleAWR报告指标全解析pretendsmile

=====================================================================================================

AWR(AutomaticWorkloadRepository)

一堆历史性能数据,放在SYSAUX表空间上,AWR和SYSAUX都是10g出现的,是Oracle调优的关键特性;大约1999年左右开始开发,已经有15年历史

默认快照间隔1小时,10g保存7天、11g保存8天;可以通过DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS修改

DBA_HIST_WR_CONTROL

AWR程序核心是dbms_workload_repository包

@/rdbms/admin/awrrpt本实例

@/rdbms/admin/awrrptiRAC中选择实例号

主要是MMON(ManageabilityMonitorProcess)和它的小工进程(m00x)

MMON的功能包括:1.启动slave进程m00x去做AWR快照2.当某个度量阀值被超过时发出alert告警3.为最近改变过的SQL对象捕获指标信息

1.手动执行一个快照:

Execdbms_workload_repository.create_snapshot;

2.创建一个AWR基线

ExecDBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id,end_snap_id,baseline_name);

3.AWR比对报告

@/rdbms/admin/awrddrpt

4.RAC全局AWR

@/rdbms/admin/awrgrpt

5.自动生成AWRHTML报告:

AverageActiveSession:AAS=DBtime/ElapsedTimeDBTime=60min,ElapsedTime=60minAAS=60/60=1负载一般DBTime=1min,ElapsedTime=60minAAS=1/60负载很轻DBTime=60000min,ElapsedTime=60minAAS=1000系统hang了吧?

DBTIME=DBCPU+Non-IdleWait+WaitonCPUqueue

如果仅有2个逻辑CPU,而2个session在60分钟都没等待事件,一直跑在CPU上,那么:

DBCPU=2*60mins,DBTime=2*60+0+0=120

AAS=120/60=2正好等于OSload2。

如果有3个session都100%仅消耗CPU,那么总有一个要waitonqueue

DBCPU=2*60mins,waitonCPUqueue=60mins

AAS=(120+60)/60=3主机load亦为3,此时vmstat看waitingforruntime

真实世界中?DBCpu=xxmins,Non-IdleWait=enq:TX+cursorpinSonX+latch:xxx+dbfilesequentialread+………..阿猫阿狗

内存管理方式:MSMM、ASMM(sga_target)、AMM(memory_target)

Buffercache和sharedpoolsize的begin/end值在ASMM、AMM和11gR2MSMM下可是会动的哦!

这里说sharedpool一直收缩,则在shrink过程中一些rowcache对象被lock住可能导致前台rowcachelock等解析等待,最好别让sharedpoolshrink。如果这里sharedpool一直在grow,那说明sharedpool原有大小不足以满足需求(可能是大量硬解析),结合下文的解析信息和SGAbreakdown来一起诊断问题。

注意这些LoadProfile负载指标在本环节提供了2个维度persecond和pertransaction。

在statspack/AWR出现之前的调优洪荒时代,有很多DBA依赖V$SYSSTAT等视图中的累计统计信息来调优,以当前的调优眼光来看,那无异于刀耕火种。

上述所有指标的目标均为100%,即越大越好,在少数bug情况下可能超过100%或者为负值。

1、BufferNowait%session申请一个buffer(兼容模式)不等待的次数比例。需要访问buffer时立即可以访问的比率,不兼容的情况在9i中是bufferbusywaits,从10g以后bufferbusywaits分离为bufferbusywait和readbyothersession2个等待事件:

9i中waitstat的总次数基本等于bufferbusywaits等待事件的次数SQL>selectsum(TOTAL_WAITS)fromv$system_eventwhereevent='bufferbusywaits';SUM(TOTAL_WAITS)—————-33070394SQL>selectsum(count)fromv$waitstat;SUM(COUNT)———-3306933510gwaitstat的总次数基本等于bufferbusywaits和readbyothersession等待的次数总和SQL>selectsum(TOTAL_WAITS)fromv$system_eventwhereevent='bufferbusywaits'orevent='readbyothersession';SUM(TOTAL_WAITS)—————-60675815SQL>selectsum(count)fromv$waitstat;SUM(COUNT)———-60423739BufferNowait%的计算公式是sum(v$waitstat.wait_count)/(v$sysstatstatisticsessionlogicalreads),例如在AWR中:

BufferNowait=(40,769,800–(24543+743+1116+35))/(40,769,800)=0.99935=99.94%

SELECTSUM(WAIT_COUNT)FROMDBA_HIST_WAITSTATWHERESNAP_ID=:B3ANDDBID=:B2ANDINSTANCE_NUMBER=:B1

2、bufferHIT%:经典的经典,高速缓存命中率,反应物理读和缓存命中间的纠结,但这个指标即便99%也不能说明物理读等待少了

不合理的db_cache_size,或者是SGA自动管理ASMM/Memory自动管理AMM下都可能因为db_cache_size过小引起大量的dbfilesequential/scatteredread等待事件;maclean曾经遇到过因为大量硬解析导致ASMM下sharedpool共享池大幅度膨胀,而dbcache相应缩小shrink的例子,最终dbcache收缩到只有几百兆,本来没有的物理读等待事件都大幅涌现出来。

bufferHIT%在不同版本有多个计算公式:

在9i中

BufferHitRatio=1–((physicalreads–physicalreadsdirect–physicalreadsdirect(lob))/(dbblockgets+consistentgets–physicalreadsdirect–physicalreadsdirect(lob))

在10g以后:

BufferHitRatio=1–((‘physicalreadscache’)/(‘consistentgetsfromcache’+‘dbblockgetsfromcache’)

注意:但是实际AWR中似乎还是按照9i中的算法,虽然算法的区别对最后算得的比率影响不大。

dbblockgets、consistentgets以及sessionlogicalreads的关系如下:

dbblockgets=dbblockgetsdirect+dbblockgetsfromcache

consistentgets=consistentgetsfromcache+consistentgetsdirect

consistentgetsfromcache=consistentgets–examination+else

consistentgets–examination==>指的是不需要pinbuffer直接可以执行consistentget的次数,常用于索引,只需要一次latchget

sessionlogicalreads=dbblockgets+consistentgets

其中physicalreads、physicalreadscache、physicalreadsdirect、physicalreadsdirect(lob)几者的关系为:

physicalreads=physicalreadscache+physicalreadsdirect

这个公式其实说明了物理读有2种:

physicalreadsdirect=physicalreadsdirect(lob)+physicalreadsdirecttemporarytablespace+physicalreadsdirect(普通)

这个公式也说明了直接路径读分成三个部分:

physicalwritesdirect=physicalwritesdirect(lob)+physicalwritesdirecttemporarytablespace

DBWRcheckpointbufferswritten=DBWRthreadcheckpointbufferswritten+DBWRtablespacecheckpointbufferswritten+DBWRPQtablespacecheckpointbufferswritten+….

此外保证SQL语句绑定变量和游标可以共享也是很重要的因素。

SELECTSUM(PINS),SUM(PINHITS)FROMDBA_HIST_LIBRARYCACHEWHERESNAP_ID=:B3ANDDBID=:B2ANDINSTANCE_NUMBER=:B1

在oracle中解析往往是执行的先提工作,但是通过游标共享可以解析一次执行多次,执行解析可能分成多种场景:

通俗地说softparse%反映了软解析率,而软解析在oracle中仍是较昂贵的操作,我们希望的是解析1次执行N次,如果每次执行均需要软解析,那么虽然softparse%=100%但是parsetime仍可能是消耗DBTIME的大头。

ExecutetoParse反映了执行解析比,ExecutetoParse和softparse%都很低那么说明确实没有绑定变量,而如果softparse%接近99%而ExecutetoParse不足90%则说明没有执行解析比低,需要通过静态SQL、动态绑定、session_cached_cursor、opencursors等技术减少软解析。

LatchName----------------------------------------GetRequestsMissesSleepsSpinGetsSleep1Sleep2Sleep3----------------------------------------------------------------------sharedpool9,988,63736423341000librarycache6,753,4681526146000MemoryManagementLatch369110000qmntaskqueuelatch24110000LatchHit%:=(1–(Sum(misses)/Sum(gets)))

关于Latch的更多信息内容可以参考AWR后面的专栏LatchStatistics,注意对于一个并发设计良好的OLTP应用来说,Latch、Enqueue等并发控制不应当成为系统的主要瓶颈,同时对于这些并发争用而言堆积硬件CPU和内存很难有效改善性能。

SELECTSUM(GETS),SUM(MISSES)FROMDBA_HIST_LATCHWHERESNAP_ID=:B3ANDDBID=:B2ANDINSTANCE_NUMBER=:B1

该环节提供一个大致的SQL重用及sharedpool内存使用的评估。应用是否共享SQL有多少内存是给只运行一次的SQL占掉的,对比共享SQL呢?

如果该环节中%SQLwithexecutions>1的比例小于%90,考虑用下面链接的SQL去抓硬编码的非绑定变量SQL语句。

MemoryUsage%:(sharedpool的实时大小-sharedpoolfreememory)/sharedpool的实时大小,代表sharedpool的空间使用率,虽然有使用率但没有标明碎片程度

==》上面2个指标也可以用来大致了解sharedpool中的内存碎片程序,因为SINGLE_USE_SQL单次执行的SQL多的话,那么显然可能有较多的共享池内存碎片

SQL复用率低的原因一般来说就是硬绑定变量(hardCoding)未合理使用绑定变量(bindvariable),对于这种现象短期无法修改代表使用绑定变量的可以ALTERSYSTEMSETCURSOR_SHARING=FORCE;来绕过问题,对于长期来看还是要修改代码绑定变量。Oracle从11g开始宣称今后将废弃CURSOR_SHARING的SIMILAR选项,同时SIMILAR选项本身也造成了很多问题,所以一律不推荐用CURSOR_SHARING=SIMILAR。

基于WaitInterface的调优是目前的主流!每个指标都重要!

基于命中比例的调优,好比是统计局的报告,张财主家财产100万,李木匠家财产1万,平均财产50.5万。

基于等待事件的调优,好比马路上100辆汽车的行驶记录表,上车用了几分钟,红灯等了几分钟,拥堵塞了几分钟。。。

丰富的等待事件以足够的细节来描绘系统运行的性能瓶颈,这是Mysql梦寐以求的东西……

Waits:该等待事件发生的次数,对于DBCPU此项不可用

%TotalCallTime,该等待事件占总的calltime的比率

totalcalltime=totalCPUtime+totalwaittimefornon-idleevents

%TotalCallTime=timeforeachtimedevent/totalcalltime

WaitClass:等待类型:Concurrency,SystemI/O,UserI/O,Administrative,Other,Configuration,Scheduler,Cluster,Application,Idle,Network,Commit

几种常见的等待事件

=========================>

enq:XX队列锁等待,视乎不同的队列锁有不同的情况:

freebufferwaits:是由于无法找到可用的buffercache空闲区域,需要等待DBWR写入完成引起

writecompletewaits:一般此类等待事件是由于DBWR将脏数据写入数据文件,其他进程如果需要修改buffercache会引起此等待事件,一般是I/O性能问题或者是DBWR工作负荷过量引起

Waittime1Seconds.

controlfileparallelwrite:频繁的更新控制文件会造成大量此类等待事件,如日志频繁切换,检查点经常发生,nologging引起频繁的数据文件更改,I/O系统性能缓慢。

TimeModelStatisticsDB/Inst:ITSCMP/itscmp2Snaps:70719-70723->Totaltimeindatabaseuser-calls(DBTime):883542.2s->Statisticsincludingtheword"background"measurebackgroundprocesstime,andsodonotcontributetotheDBtimestatistic->Orderedby%orDBtimedesc,StatisticnameStatisticNameTime(s)%ofDBTime------------------------------------------------------------------------sqlexecuteelapsedtime805,159.791.1sequenceloadelapsedtime41,159.24.7DBCPU20,649.12.3parsetimeelapsed1,112.8.1hardparseelapsedtime995.2.1hardparse(sharingcriteria)elapsedtime237.3.0hardparse(bindmismatch)elapsedtime227.6.0connectionmanagementcallelapsedtime29.7.0PL/SQLexecutionelapsedtime9.2.0PL/SQLcompilationelapsedtime6.6.0failedparseelapsedtime2.0.0repeatedbindelapsedtime0.4.0DBtime883,542.2backgroundelapsedtime25,439.0backgroundcputime1,980.9-------------------------------------------------------------

1)backgroundelapsedtime2)backgroundcputime3)RMANcputime(backup/restore)1)DBtime2)DBCPU2)connectionmanagementcallelapsedtime2)sequenceloadelapsedtime2)sqlexecuteelapsedtime2)parsetimeelapsed3)hardparseelapsedtime4)hardparse(sharingcriteria)elapsedtime5)hardparse(bindmismatch)elapsedtime3)failedparseelapsedtime4)failedparse(outofsharedmemory)elapsedtime2)PL/SQLexecutionelapsedtime2)inboundPL/SQLrpcelapsedtime2)PL/SQLcompilationelapsedtime2)Javaexecutionelapsedtime2)repeatedbindelapsedtime

ForegroundWaitClass->s-second,ms-millisecond-1000thofasecond->orderedbywaittimedesc,waitsdesc->%Timeouts:valueof0indicatesvaluewas<.5%.Valueofnullistruly0->CapturedTimeaccountsfor102.7%ofTotalDBtime883,542.21(s)->TotalFGWaitTime:886,957.73(s)DBCPUtime:20,649.06(s)Avg%TimeTotalWaitwaitWaitClassWaits-outsTime(s)(ms)%DBtime--------------------------------------------------------------------------Cluster9,825,8841525,1345359.4Concurrency688,3750113,78216512.9UserI/O34,405,042076,69528.7Commit172,193062,7763657.1Application11,422057,76050576.5Configuration19,418148,88925185.5DBCPU20,6492.3Other1,757,8969492410.1SystemI/O30,1650598200.1Network171,955,673040000.0Administrative210001010.0-------------------------------------------------------------selectdistinctwait_classfromv$event_name;WAIT_CLASS----------------------------------------------------------------ConcurrencyUserI/OSystemI/OAdministrativeOtherConfigurationSchedulerClusterApplicationQueueingIdleNetworkCommit

Other类型,遇到该类型等待事件的话常见的原因是OracleBug或者网络、I/O存在问题,一般推荐联系Maclean。

Concurrency类型并行争用类型的等待事件,典型的如latch:sharedpool、latch:librarycache、rowcachelock、librarycachepin/lock

Cluster类型为RealApplicationClusterRAC环境中的等待事件,需要注意的是如果启用了RACoption,那么即使你的集群中只启动了一个实例,那么该实例也可能遇到Cluster类型的等待事件,例如gcbufferbusy

SystemI/O主要是后台进程维护数据库所产生的I/O,例如controlfileparallelwrite、logfileparallelwrite、dbfileparallelwrite。

UserI/O主要是前台进程做了一些I/O操作,并不是说后台进程不会有这些等待事件。典型的如dbfilesequential/scatteredread、directpathread

Configuration由于配置引起的等待事件,例如日志切换的logfileswitchcompletion(日志文件大小/数目不够),sequence的enq:SQ–contention(Sequence使用nocache);Oracle认为它们是由于配置不当引起的,但实际未必真是这样的配置引起的。

Application应用造成的等待事件,例如enq:TM–contention和enq:TX–rowlockcontention;Oracle认为这是由于应用设计不当造成的等待事件,但实际这些Applicationclass等待可能受到Concurrency、Cluster、SystemI/O、UserI/O等多种类型等待的影响,例如本来commit只要1ms,则某一行数据仅被锁定1ms,但由于commit变慢从而释放行锁变慢,引发大量的enq:TX–rowlockcontention等待事件。

Commit仅logfilesync,logfilesync的影响十分广泛,值得我们深入讨论。

Network:网络类型的等待事件例如SQL*Netmoredatatoclient、SQL*Netmoredatatodblink

Idle空闲等待事件,最为常见的是rdbmsipcmessage(等待实例内部的ipc通信才干活,即别人告知我有活干,我才干,否则我休息==》Idle),SQL*Netmessagefromclient(等待SQL*NET传来信息,否则目前没事干)

ForegroundWaitEventsSnaps:70719-70723->s-second,ms-millisecond-1000thofasecond->OnlyeventswithTotalWaitTime(s)>=.001areshown->orderedbywaittimedesc,waitsdesc(idleeventslast)->%Timeouts:valueof0indicatesvaluewas<.5%.Valueofnullistruly0Avg%TimeTotalWaitwaitWaits%DBEventWaits-outsTime(s)(ms)/txntime--------------------------------------------------------------------------gcbufferbusyacquire3,274,3523303,0889313.334.3gcbufferbusyrelease387,6732128,1143301.614.5enq:TX-indexcontention193,918097,3755020.811.0cellsingleblockphysical30,738,730063,6062124.87.2logfilesync172,193062,7763650.77.1gccurrentblockbusy146,154053,0273630.66.0enq:TM-contention1,060047,228445550.05.3enq:SQ-contention17,431035,68320470.14.0gccrblockbusy105,204033,7463210.43.8bufferbusywaits279,721012,646451.11.4enq:HW-contention1,201312,192101510.01.4enq:TX-rowlockcontent9,231010,48211350.01.2cellmultiblockphysicalr247,90306,547261.0.7

Event等待事件名字

Waits/Txn:该等待事件的等待次数和事务比

BackgroundWaitEventsSnaps:70719-70723->orderedbywaittimedesc,waitsdesc(idleeventslast)->OnlyeventswithTotalWaitTime(s)>=.001areshown->%Timeouts:valueof0indicatesvaluewas<.5%.Valueofnullistruly0Avg%TimeTotalWaitwaitWaits%bgEventWaits-outsTime(s)(ms)/txntime--------------------------------------------------------------------------dbfileparallelwrite90,97907,831860.430.8gcslogflushsync4,756,07664,714119.318.5enq:CF-contention2,123404,03819020.015.9controlfilesequentialre90,22702,380260.49.4logfileparallelwrite108,38301,723160.46.8controlfileparallelwrit4,81209882050.03.9DiskfileoperationsI/O26,2160731280.12.9flashbacklogfilewrite9,8700720730.02.8LNSwaitonSENDREQ202,747060030.82.4ASMfilemetadataoperatio15,8010344220.11.4cellsingleblockphysical39,283034190.21.3LGWR-LNSwaitonchannel183,4431820310.7.8gccurrentblockbusy122013210820.0.5gcbufferbusyrelease601212721130.0.5ParameterFileI/O59201161950.0.5logfilesequentialread1,8040104580.0.4

OperatingSystemStatisticsSnaps:70719-70723TIMEstatisticvaluesarediffed.Allothersdisplayactualvalues.EndValueisdisplayedifdifferent->orderedbystatistictype(CPUUse,VirtualMemory,HardwareConfig),NameStatisticValueEndValue---------------------------------------------------------------BUSY_TIME2,894,855IDLE_TIME5,568,240IOWAIT_TIME18,973SYS_TIME602,532USER_TIME2,090,082LOAD813VM_IN_BYTES0VM_OUT_BYTES0PHYSICAL_MEMORY_BYTES101,221,343,232NUM_CPUS24NUM_CPU_CORES12NUM_CPU_SOCKETS2GLOBAL_RECEIVE_SIZE_MAX4,194,304GLOBAL_SEND_SIZE_MAX2,097,152TCP_RECEIVE_SIZE_DEFAULT87,380TCP_RECEIVE_SIZE_MAX4,194,304TCP_RECEIVE_SIZE_MIN4,096TCP_SEND_SIZE_DEFAULT16,384TCP_SEND_SIZE_MAX4,194,304TCP_SEND_SIZE_MIN4,096-------------------------------------------------------------

OperatingSystemStatistics操作系统统计信息

ServiceStatisticsSnaps:70719-70723->orderedbyDBTimePhysicalLogicalServiceNameDBTime(s)DBCPU(s)Reads(K)Reads(K)----------------------------------------------------------------------------itms-contentmasterdb-prod897,09920,61835,6681,958,580SYS$USERS4,3121895,95713,333itmscmp1,94112114,94918,187itscmp33120114218itscmp_dgmgrl121100SYS$BACKGROUND0014230,022ITSCMP1_PR0000its-reference-prod0000itscmpXDB0000

PhysicalReads:本服务名所消耗的物理读

LogicalReads:本服务所消耗的逻辑读

ServiceWaitClassStatsSnaps:70719-70723->WaitClassinfoforservicesintheServiceStatisticssection.->TotalWaitsandTimeWaiteddisplayedforthefollowingwaitclasses:UserI/O,Concurrency,Administrative,Network->TimeWaited(WtTime)insecondsServiceName----------------------------------------------------------------UserI/OUserI/OConcurcyConcurcyAdminAdminNetworkNetworkTotalWtsWtTimeTotalWtsWtTimeTotalWtsWtTimeTotalWtsWtTime------------------------------------------------------------------------itms-contentmasterdb-prod3332167071443678373113759001.718E+08127SYS$USERS173233365667383020726743itmscmp6767731319183100022160itscmp2195772361093000181120itscmp_dgmgrl340800090SYS$BACKGROUND7194013003206775600442252872-------------------------------------------------------------

HostCPU(CPUs:24Cores:12Sockets:2)~~~~~~~~LoadAverageBeginEnd%User%System%WIO%Idle------------------------------------------------------8.4112.8424.77.10.265.8

“LoadAverage”begin/end值代表每个CPU的大致运行队列大小。上例中快照开始到结束,平均CPU负载增加了;与《2-5OperatingSystemStatistics》中的LOAD相呼应。

%User+%System=>总的CPU使用率,在这里是31.8%

ElapsedTime*NUM_CPUS*CPUutilization=60.23(mins)*24*31.8%=459.67536mins=BusyTime

InstanceCPU~~~~~~~~~~~~%oftotalCPUforInstance:26.7%ofbusyCPUforInstance:78.2%DBtimewaitingforCPU-ResourceMgr:0.0%TotalCPU,该实例所使用的CPU占总CPU的比例%oftotalCPUforInstance

%BusyCPU,该实例所使用的Cpu占总的被使用CPU的比例%ofbusyCPUforInstance

例如共4个逻辑CPU,其中3个被完全使用,3个中的1个完全被该实例使用,则%TotalCPU==25%,而%BusyCPU=1/3=33%

当CPU高时一般看%BusyCPU可以确定CPU到底是否是本实例消耗的,还是主机上其他程序

%ofbusyCPUforInstance=(DBCPU+backgroundcputime)/(BUSY_TIME/100)=(20,649.1+1,980.9)/(2,894,855/100)=78.17%

%ofTotalCPUforInstance=(DBCPU+backgroundcputime)/(BUSY_TIME+IDLE_TIME/100)=(20,649.1+1,980.9)/((2,894,855+5,568,240)/100)=26.73%

%DBtimewaitingforCPU(ResourceManager)=(RSRC_MGR_CPU_WAIT_TIME/100)/DBTIME

SQLorderedbyElapsedTimeSnaps:70719-70723->ResourcesreportedforPL/SQLcodeincludestheresourcesusedbyallSQLstatementscalledbythecode.->%TotalDBTimeistheElapsedTimeoftheSQLstatementdividedintotheTotalDatabaseTimemultipliedby100->%Total-ElapsedTimeasapercentageofTotalDBtime->%CPU-CPUTimeasapercentageofElapsedTime->%IO-UserI/OTimeasapercentageofElapsedTime->CapturedSQLaccountfor53.9%ofTotalDBTime(s):883,542->CapturedPL/SQLaccountfor0.5%ofTotalDBTime(s):883,542ElapsedElapsedTimeTime(s)ExecutionsperExec(s)%Total%CPU%IOSQLId--------------------------------------------------------------------------181,411.338,8484.6720.5.0.1g0yc9szpuu068注意对于PL/SQL,SQLStatistics不仅会体现该PL/SQL的执行情况,还会包括该PL/SQL包含的SQL语句的情况。如上例一个TOPPL/SQL执行了448s,而这448s中绝大多数是这个PL/SQL下的一个SQL执行500次耗费的。

则该TOPPL/SQL和TOPSQL都上榜,一个执行一次耗时448s,一个执行500次耗时448s。如此情况则ElapsedTime加起来可能超过100%的ElapsedTime,这是正常的。

对于鹤立鸡群的SQL很有必要一探究竟,跑个@/rdbms/admin/awrsqrpt看看吧!

对于维护操作,例如加载或清除数据,大的跑批次、报表而言ElapsedTimeperExec(s)高一些是正常的。

SQLId:通过计算SQL文本获得的SQL_ID,不同的SQL文本必然有不同的SQL_ID,对于10g~11g而言只要SQL文本不变那么在数据库之间该SQL对应的SQL_ID应当不不变的,12c中修改了SQL_ID的计算方法

CapturedSQLaccountfor53.9%ofTotalDBTime(s)对于不绑定变量的应用来说TopSQL有可能失准,所以要参考本项

SQLorderedbyCPUTimeSnaps:70719-70723->ResourcesreportedforPL/SQLcodeincludestheresourcesusedbyallSQLstatementscalledbythecode.->%Total-CPUTimeasapercentageofTotalDBCPU->%CPU-CPUTimeasapercentageofElapsedTime->%IO-UserI/OTimeasapercentageofElapsedTime->CapturedSQLaccountfor34.9%ofTotalCPUTime(s):20,649->CapturedPL/SQLaccountfor0.5%ofTotalCPUTime(s):20,649CPUCPUperElapsedTime(s)ExecutionsExec(s)%TotalTime(s)%CPU%IOSQLId-------------------------------------------------------------------------1,545.01,864,4240.007.54,687.833.065.78g6a701j83c8qModule:MZIndexerSELECTt0.BOOLEAN_VALUE,t0.CLASS_CODE,t0.CREATED,t0.END_DATE,t0.PRODUCT_ATTRIBUTE_ID,t0.LAST_MODIFIED,t0.OVERRIDE_FLAG,t0.PRICE,t0.PRODUCT_ATTRIBUTE_TYPE_ID,t0.PRODUCT_ID,t0.PRODUCT_PUB_RELEASE_TYPE_ID,t0.PRODUCT_VOD_TYPE_ID,t0.SAP_PRODUCT_ID,t0.START_DATE,t0.STRING_VALUEFROMmz_product_attributet0WHER

SQLorderedbyGetsDB/Inst:ITSCMP/itscmp2Snaps:70719-70723->ResourcesreportedforPL/SQLcodeincludestheresourcesusedbyallSQLstatementscalledbythecode.->%Total-BufferGetsasapercentageofTotalBufferGets->%CPU-CPUTimeasapercentageofElapsedTime->%IO-UserI/OTimeasapercentageofElapsedTime->TotalBufferGets:2,021,476,421->CapturedSQLaccountfor68.2%ofTotalBufferGetsElapsedGetsExecutionsperExec%TotalTime(s)%CPU%IOSQLId-------------------------------------------------------------------------4.61155E+081,864,424247.322.84,687.833.065.78g6a701j83c

注意buffergets逻辑读是消耗CPUTIME的重要源泉,但并不是说消耗CPUTIME的只有buffergets。大多数情况下SQLorderbyCPUTIME和SQLorderbybuffersgets2个部分的TOPSQL及其排列顺序都是一样的,此种情况说明消耗最多buffergets的就是消耗最多CPU的SQL,如果我们希望降低系统的CPU使用率,那么只需要调优SQL降低buffergets即可。

但也并不是100%的情况都是如此,CPUTIME的消耗者还包括函数运算、PL/SQL控制、Latch/Mutex的Spin等等,所以SQLorderbyCPUTIME和SQLorderbybuffersgets2个部分的TOPSQL完全不一样也是有可能的,需要因地制宜来探究到底是什么问题导致的HighCPU,进而裁度解决之道。

GetsperExec:该SQL平均单次的buffergets,对于事务型transaction操作而言一般该单次buffergets小于2000

%Total该SQL累计运行所消耗的buffergets占总的dbbuffergets的比率,(SQLbuffergets/DBtotalbuffergets)

SQLorderedbyReadsDB/Inst:ITSCMP/itscmp2Snaps:70719-70723->%Total-PhysicalReadsasapercentageofTotalDiskReads->%CPU-CPUTimeasapercentageofElapsedTime->%IO-UserI/OTimeasapercentageofElapsedTime->TotalDiskReads:56,839,035->CapturedSQLaccountfor34.0%ofTotalPhysicalReadsElapsedReadsExecutionsperExec%TotalTime(s)%CPU%IOSQLId-------------------------------------------------------------------------9,006,16319.0062E+0615.8720.95.980.94g36tmp70h185Physicalreads:该SQL累计运行所消耗的物理读

ReadsperExec:该SQL单次运行所消耗的物理读,(SQLPhysicalreads/Executions),对于OLTPtransaction类型的操作而言单次一般不超过100

%Total:该SQL累计消耗的物理读占该时段总的物理读的比例,即(SQLphysicalread/TotalDBphysicalread)

SQLorderedbyExecutionsSnaps:70719-70723->%CPU-CPUTimeasapercentageofElapsedTime->%IO-UserI/OTimeasapercentageofElapsedTime->TotalExecutions:48,078,147->CapturedSQLaccountfor50.4%ofTotalElapsedExecutionsRowsProcessedRowsperExecTime(s)%CPU%IOSQLId--------------------------------------------------------------------------6,327,96311,249,6451.8590.547.852.71avv7759j8r

按照执行次数来排序的话,也是性能报告对比时一个重要的参考因素,因为如果TOPSQL的执行次数有明显的增长,那么性能问题的出现也是意料之中的事情了。当然执行次数最多的,未必便是对性能影响最大的TOPSQL

RowsperExec:SQL平均单次执行所处理的行数,这个指标在诊断一些数据问题造成的SQL性能问题时很有用

SQLorderedbyParseCallsSnaps:70719-70723->TotalParseCalls:2,160,124->CapturedSQLaccountfor58.3%ofTotal%TotalParseCallsExecutionsParsesSQLId----------------------------------------------496,475577,35722.98d07gaa3wntdff

ParseCalls:解析调用次数,与上文的LoadProfile中的Parse数一样包括软解析softparse和硬解析hardparse

%TotalParses:本SQL解析调用次数占该时段数据库总解析次数的比率,为(SQLParseCalls/TotalDBParseCalls)

SQLorderedbySharableMemorySnaps:70719-70723->OnlyStatementswithSharableMemorygreaterthan1048576aredisplayedSharableMem(b)Executions%TotalSQLId-------------------------------------------------8,468,359390.08au89sasqfb2ynModule:MZContentBridgeSELECTt0.ASPECT_RATIO,t0.CREATED,t0.FILE_EXTENSION,t0.HEIGHT,t0.VIDEO_FILE_DIMENSIONS_ID,t0.LAST_MODIFIED,t0.NAME,t0.WIDTHFROMMZ_VIDEO_FILE_DIMENSIONSt0WHERE(t0.HEIGHT=:1ANDt0.WIDTH=:2)

ShareableMem(b):SQL对象所占用的共享内存使用量

%Total:该SQL对象锁占共享内存占总的共享内存的比率

VersionCountOracle中的执行计划可以是多版本的,即对于同一个SQL语句有多个不同版本的执行计划,这些执行计划又称作子游标,而一个SQL语句的文本可以称作一个父游标。一个父游标对应多个子游标,产生不同子游标的原因是SQL在被执行时无法共享之前已经生成的子游标,原因是多种多样的,例如在本session中做了一个优化器参数的修改例如optimizer_index_cost_adj从100修改到99,则本session的优化环境optimizerenv将不同于之前的子游标生成环境,这样就需要生成一个新的子游标,例如:

SQL>createtableempasselect*fromscott.emp;Tablecreated.SQL>select*fromempwhereempno=1;norowsselectedSQL>select/*+MACLEAN*/*fromempwhereempno=1;norowsselectedSQL>selectSQL_ID,version_countfromV$SQLAREAWHERESQL_TEXTlike'%MACLEAN%'andSQL_TEXTnotlike'%like%';SQL_IDVERSION_COUNT--------------------------bxnnm7z1qmg261SQL>selectcount(*)fromv$SQLwhereSQL_ID='bxnnm7z1qmg26';COUNT(*)----------1SQL>altersessionsetoptimizer_index_cost_adj=99;Sessionaltered.SQL>select/*+MACLEAN*/*fromempwhereempno=1;norowsselectedSQL>selectSQL_ID,version_countfromV$SQLAREAWHERESQL_TEXTlike'%MACLEAN%'andSQL_TEXTnotlike'%like%';SQL_IDVERSION_COUNT--------------------------bxnnm7z1qmg262SQL>selectcount(*)fromv$SQLwhereSQL_ID='bxnnm7z1qmg26';COUNT(*)----------2SQL>selectchild_number,OPTIMIZER_ENV_HASH_VALUE,PLAN_HASH_VALUEfromv$SQLwhereSQL_ID='bxnnm7z1qmg26';CHILD_NUMBEROPTIMIZER_ENV_HASH_VALUEPLAN_HASH_VALUE---------------------------------------------------037041287403956160932136364789583956160932

注意V$SQLAREA.VERSION_COUNT未必等于selectcount(*)FROMV$SQLWHERESQL_ID=”,即V$SQLAREA.VERSION_COUNT显示的子游标数目未必等于当前实例中还存有的子游标数目,由于sharedpoolagedout算法和其他一些可能导致游标失效的原因存在,所以子游标被清理掉是很常见的事情。V$SQLAREA.VERSION_COUNT只是一个计数器,它告诉我们曾经生成了多少个childcursor,但不保证这些child都还在sharedpool里面。

此外可以通过v$SQL的child_number字段来分析该问题,如果child_number存在跳号则也说明了部分child被清理了。

子游标过多的影响,当子游标过多(例如超过3000个时),进程需要去扫描长长的子游标列表childcursorlist以找到一个合适的子游标childcursor,进而导致cursorsharing性能问题现大量的Cursor:MutexS和librarycachelock等待事件。

HashValue:共享SQL的哈希值

OnlyStatementswithVersionCountgreaterthan20aredisplayed注意该环节仅列出versioncount>20的语句

SQLorderedbyClusterWaitTimeDB/Inst:ITSCMP/itscmp2Snaps:70719-70723->%Total-ClusterTimeasapercentageofTotalClusterWaitTime->%Clu-ClusterTimeasapercentageofElapsedTime->%CPU-CPUTimeasapercentageofElapsedTime->%IO-UserI/OTimeasapercentageofElapsedTime->OnlySQLwithClusterWaitTime>.005secondsisreported->TotalClusterWaitTime(s):525,480->CapturedSQLaccountfor57.2%ofTotalClusterElapsedWaitTime(s)Executions%TotalTime(s)%Clu%CPU%IOSQLId-------------------------------------------------------------------------132,639.338,84825.2181,411.373.1.0.1g0yc9szpuu068

OnlySQLwithClusterWaitTime>.005secondsisreported这个环节仅仅列出ClusterWaitTime>0.005s的SQL

%Total:该SQL所消耗的ClusterWaittime占总的ClusterWaittime的比率,为(SQLclusterwaittime/DBtotalclusterWaitTime)

%Clu:该SQL所消耗的ClusterWaittime占该SQL总的耗时的比率,为(SQLclusterwaittime/SQLelapsedTime),该指标说明了该语句是否是集群等待敏感的

InstanceActivityStatsDB/Inst:ITSCMP/itscmp2Snaps:70719-70723->OrderedbystatisticnameStatisticTotalperSecondperTrans-----------------------------------------------------------------------------BatchedIO(bound)vectorcount450,449124.61.8BatchedIO(full)vectorcount5,4851.50.0BatchedIO(space)vectorcount1,4670.40.0BatchedIOblockmisscount4,119,0701,139.716.7BatchedIObufferdefragcount39,71011.00.2BatchedIOdoublemisscount297,35782.31.2BatchedIOsameunitcount1,710,492473.37.0BatchedIOsingleblockcount329,52191.21.3BatchedIOslowjumpcount47,10413.00.2BatchedIOvectorblockcount2,069,852572.78.4BatchedIOvectorreadcount262,16172.51.1BlockCleanoutOptimreferenced37,57410.40.2CCursor+sqlareaevicted1,4570.40.0...............

InstanceActivityStats的数据来自于DBA_HIST_SYSSTAT,DBA_HIST_SYSSTAT来自于V$SYSSTAT。

这里每一个指标都代表一种数据库行为的活跃度,例如redosize是指生成redo的量,sorts(disk)是指磁盘排序的次数,tablescans(directread)是指直接路径扫描表的次数。

虽然这些指标均只有Total、perSecond每秒、perTrans每事务三个维度,但对诊断问题十分有用。

我们来举几个例子:

1、例如当TopEvent中存在directpathread为Top等待事件,则需要分清楚是对普通堆表的directread还是由于大量LOB读造成的directpathread,这个问题可以借助tablescans(directread)、tablescans(longtables)、physicalreadsdirect、physicalreadsdirect(lob)、physicalreadsdirecttemporary几个指标来分析,假设physicalreadsdirect>>远大于physicalreadsdirect(lob)+physicalreadsdirecttemporary,且有较大的tablescans(directread)、tablescans(longtables)(注意这2个指标代表的是扫描表的次数不同于上面的phsicalreads的单位为块数*次数),则说明了是大表扫描引起的directpathread。

3、系统出现IO类型的等待事件为TOpFive例如dbfilesequential/scatteredread,我们需要通过AWR来获得系统IO吞吐量和IOPS:

physicalreadbytes主要是应用造成的物理读取(Totalsizeinbytesofalldiskreadsbyapplicationactivity(andnototherinstanceactivity)only.)而physicalreadtotalbytes则包括了rman备份恢复和后台维护任务所涉及的物理读字节数,所以我们在研究IO负载时一般参考physicalreadtotalbytes;以下4对指标均存在上述的关系

总的物理吞吐量/秒=physicalreadtotalbytes+physicalwritetotalbytes

总的物理IOPS=physicalreadtotalIOrequests+physicalwritetotalIOrequests

IO的主要指标吞吐量、IOPS和延迟均可以从AWR中获得了,IO延迟的信息可以从UserI/O的WaitClassAvgWaittime获得,也可以参考11g出现的IOStatbyFunctionsummary

InstanceActivityStats有大量的指标,但是对于这些指标的介绍没有那一份文档有完整详尽的描述,即便在Oracle原厂内部要没有(或者是Maclean没找到),实际是开发人员要引入某一个ActivityStats是比较容易的,并不像申请引入一个新后台进程那样麻烦,Oracle对于新版本中新后台进程的引入有严格的要求,但ActivityStats却很容易,往往一个one-offpatch中就可以引入了,实际上ActivityStats在源代码层仅仅是一些计数器。’

InstanceActivityStats-AbsoluteValuesSnaps:7071->Statisticswithabsolutevalues(shouldnotbediffed)StatisticBeginValueEndValue--------------------------------------------------------------sessionpgamemorymax1.157882826E+121.154290304E+12sessioncursorcachecount157,042,373157,083,136sessionugamemory5.496429019E+145.496775467E+14openedcursorscurrent268,916265,694workareamemoryallocated827,704837,487logonscurrent2,6092,613sessionugamemorymax1.749481584E+131.749737418E+13sessionpgamemory4.150306913E+114.150008177E+11

InstanceActivityStats–AbsoluteValues是显示快照起点和终点的一些指标的绝对值

InstanceActivityStats-ThreadActivityDB/Inst:G10R25/G10R25Snaps:3663-3->Statisticsidentifiedby'(derived)'comefromsourcesotherthanSYSSTATStatisticTotalperHour-----------------------------------------------------------logswitches(derived)172,326.47

reads:指该表空间上发生的物理读的次数(单位不是块,而是次数)

AvReads/s:指该表空间上平均每秒的物理读次数(单位不是块,而是次数)

AvRd(ms):指该表空间上每次读的平均读取延迟

Writes:该表空间上发生的物理写的次数;对于那些Writes总是等于0的表空间不妨了解下是否数据为只读,如果是可以通过readonlytablespace来解决RAC中的一些性能问题。

AvWrites/s:指该表空间上平均每秒的物理写次数

bufferWaits:该表空间上发生bufferbusywaits和readbyothersession的次数(9i中bufferbusywaits包含了readbyothersession)。

Tablespace表空间名

FileName数据文件的路径

Reads:该数据文件上累计发生过的物理读次数,不是块数

AvReads/s:该数据文件上平均每秒发生过的物理读次数,不是块数

AvRd(ms):该数据文件上平均每次物理读取的延迟,单位为ms

AvBlks/Rd:该数据文件上平均每次读取涉及到的块数,OLTP环境该值接近1

Writes:该数据文件上累计发生过的物理写次数,不是块数

AvWrites/s:该数据文件上平均每秒发生过的物理写次数,不是块数

bufferWaits:该数据文件上发生bufferbusywaits和readbyothersession的次数(9i中bufferbusywaits包含了readbyothersession)。

若某个表空间上有较高的IO负载,则有必要分析一下是否其所属的数据文件上的IO较为均匀还是存在倾斜,是否需要结合存储特征来将数据均衡分布到不同磁盘上的数据文件上,以优化I/O

Ppool池的名字D:默认的缓冲池defaultbufferpool,K:KeepPool,R:RecyclePool;2k4k8k16k32k:代表各种非标准块大小的缓冲池

Numberofbuffers:实际的缓冲块数目,约等于池的大小/池的块大小

PoolHit%:该缓冲池的命中率

BufferGets:对该缓冲池的中块的访问次数包括consistentgets和dbblockgets

PhysicalReads:该缓冲池BufferCache引起了多少物理读,其实是physicalreadscache,单位为块数*次数

PhysicalWrites:该缓冲池中Buffercache被写的物理写,其实是physicalwritesfromcache,单位为块数*次数

FreeBufferWaits:等待空闲缓冲的次数,可以看做该bufferpool发生freebufferwaits等待的次数

WriteCompWait:等待DBWR写入脏buffer到磁盘的次数,可以看做该bufferpool发生writecompletewaits等待的次数

BufferBusyWaits:该缓冲池发生bufferbusywait等待的次数

MTTRWrites:为了满足FAST_START_MTTR_TARGET指定的MTTR值而做出的物理写WRITES_MTTR

LogSizeWrites:由于最小的redologfile而做出的物理写WRITES_LOGFILE_SIZE

LogCkptwrites:由于LOG_CHECKPOINT_INTERVAL和LOG_CHECKPOINT_TIMEOUT驱动的增量检查点而做出的物理写WRITES_LOG_CHECKPOINT_SETTINGS

OtherSettingsWrites:由于其他设置(例如FAST_START_IO_TARGET)而引起的物理写,WRITES_OTHER_SETTINGS

AutotuneCkptWrites:由于自动调优检查点而引起的物理写,WRITES_AUTOTUNE

ThreadCkptWrites:由于threadcheckpoint而引起的物理写,WRITES_FULL_THREAD_CKPTB代表开始点,E代表结尾

RecoveryEstdIOs:实际是当前buffercache中的脏块数量,一旦实例崩溃这些脏块要被前滚

ActualRedoBlks:当前实际需要恢复的redo重做块数量

TargetRedoBlks:是LogSzRedoBlks、LogCkptTimeoutRedoBlks、LogCkptIntervalRedoBlks三者的最小值

OptLogSz(M):基于FAST_START_MTTR_TARGET而估算出来的redologfile的大小,单位为MB。Oracle官方推荐创建的重做日志大小至少大于这个估算值

缓冲池的颗粒大小可以参考SELECT*FROMV$SGAINFOwherenamelike(‘Granule%’);P指缓冲池的名字可能包括有Ddefaultbufferpool,KKeepPool,RrecyclePool

SizeForEst(M):指以该尺寸的bufferpool作为评估的对象,一般是目前currentsize的10%~200%,以便了解bufferpool增大~减小对物理读的影响

SizeFactor:尺寸因子,只对应bufferpool大小对当前设置的比例因子,例如current_size是100M,则如果评估值是110M那么sizeFactor就是1.1

Buffers(thousands):指这个bufferpool尺寸下的buffer数量,要乘以1000才是实际值

EstPhysReadFactor:评估的物理读因子,例如当前尺寸的bufferpool会引起100个物理读,则别的尺寸的bufferpool如果引起120个物理读,那么对应尺寸的EstPhysReadFactor就是1.2

EstimatedPhysReads(thousands):评估的物理读数目,要乘以1000才是实际值,显然不同尺寸的bufferpool对应不同的评估的物理读数目

Est%DBtimeforRds:评估的物理读占DBTIME的比率

我们看bufferpooladvisory一般有2个目的:

注意SizeFactor和EstPhysReadFactor之间不是简单的线性关系,所以需要人为介入评估得失

PGACacheHit%:指W/AWorkArea工作区的数据仅在内存中处理的比率,PGA缓存命中率

workarea是PGA中负责处理排序、哈希连接和位图合并操作的区域;workarea也叫做SQL作业区域

W/AMBprocesses:指在Workarea中处理过的数据的量,单位为MB

ExtraW/AMBRead/Written:指额外从磁盘上读写的工作区数据,单位为MB

AutoPGATarget(M):在自动PGA管理模式下实际可用的工作区内存“aggregatePGAautotarget“,因为PGA还有其他用途,不能全部作为workareamemory

PGAMemAlloc(M):目前已分配的PGA内存,alloc不等于inuse即分配的内存不等于在使用的内存,理论上PGA会将确实不使用的内存返回给OS(PGAmemoryfreedbacktoOS),但是存在PGA占用大量内存而不释放的场景

在上例中pga_aggregate_target仅为8192M,而实际processes在2,615~8000之间,如果一个进程耗费5MB的PGA也需要10000M的PGA,而实际这里PGAMemAlloc(M)是23,690M,这说明存在PGA的过载,需要调整pga_aggregate_target

W/APGAUsed(M):所有的工作区workarea(包括manual和auto)使用的内存总和量,单位为MB

%PGAW/AMem:分配给workarea的内存量占总的PGA的比例,(W/APGAUsed)/PGAMemAlloc

%AutoW/AMem:AUTO自动工作区管理所控制的内存(workarea_size_policy=AUTO)占总的workarea内存的比例

%ManW/AMem:MANUAL手动工作区管理所控制的内存(workarea_size_policy=MANUAL)占总的workarea内存的比例

GlobalMemBound(K):指在自动PGA管理模式下一个工作区所能分配的最大内存(注意一个SQL执行过程中可能有多个工作区workarea)。GlobalMemBound(K)这个指标在实例运行过程中将被持续性的修正,以反应数据库当时工作区的负载情况。显然在有众多活跃工作区的系统负载下相应地GlobalMemBound将会下降。但应当保持globalbound值不要小于1MB,否则建议调高pga_aggregate_target

LowOptimal:此行所包含工作区workarea最适合内存要求的下限

HighOptimal:此行所包含工作区workarea最适合内存要求的上限

TotalExecs:在LowOptimal~HighOptimal范围工作区内完成的总执行数

Optimalexecs:optimal执行是指完全在PGA内存中完成的执行次数

1-passExecs:指操作过程中仅发生1次磁盘读取的执行次数

M-passExecs:指操作过程中发生了1次以上的磁盘读取,频发磁盘读取的执行次数

PGATargetEst(MB)用以评估的PGA_AGGREGATE_TARGET值

SizeFactr,当前用以评估的PGA_AGGREGATE_TARGET和当前实际设置的PGA_AGGREGATE_TARGET之间的比例因子PGATargetEst/PGA_AGGREGATE_TARGE

W/AMBProcessed:workarea中要处理的数据量,单位为MB

EstdExtraW/AMBRead/WrittentoDisk:以one-pass、M-Pass方式处理的数据量预估值,单位为MB

EstdPCacheHit%:预估的PGA缓存命中率

EstdPGAOverallocCount:预估的PGA过载量,如上文所述PGA_AGGREGATE_TARGET仅是一个目标值,无法真正限制PGA内存的使用,当出现PGA内存硬性需求时会产生PGAoverallocate过载(WhenusingAutoMemoryMgmt,minimallychooseapga_aggregate_targetvaluewhereEstdPGAOverallocCountis0)

SharedPoolSize(M):用以评估的sharedpool共享池大小,在AMM/ASMM环境下shared_pool大小都可能浮动

SPSizeFactr:共享池大小的比例因子,(SharedPoolSizeforEstim/SHARED_POOL_SIZE)

EstdLCSize(M):评估的librarycache大小,单位为MB,因为是sharedpool中包含librarycache当然还有其他例如rowcache

EstLCMemObj指评估的指定大小的共享池内的librarycachememoryobject的数量ESTD_LC_MEMORY_OBJECTS

EstLCTimeSavedFactr:EstLCTimeSaved(s)的比例因子,(EstLCTimeSaved(s)/CurrentLCTimeSaved(s))ESTD_LC_TIME_SAVED_FACTOR

EstLCLoadTime(s):在指定的共享池大小情况下解析的耗时

EstLCLoadTimeFactr:EstLCLoadTime(s)的比例因子,(EstLCLoadTime(s)/CurrentLCLoadTime(s))ESTD_LC_LOAD_TIME_FACTOR

EstLCMemObjHits(K):在指定的共享池大小情况下需要的librarycachememoryobject正好在共享池中被找到的次数ESTD_LC_MEMORY_OBJECT_HITS;

SGAtargetSize:用以评估的sgatarget大小(sga_target)

SGASizeFactor:SGASize的比例因子,(estSGAtargetSize/CurrentSGAtargetSize)

EstDBTime(s):评估对应于该指定sgatargetsize会产生多少量的DBTIME,单位为秒

EstPhysicalReads:评估对应该指定的sgatargetsize会产生多少的物理读

StreamsPoolAdvisoryDB/Inst:ITSCMP/itscmp2Snap:70723SizeforSizeEstSpillEstSpillEstUnspillEstUnspillEst(MB)FactorCountTime(s)CountTime(s)---------------------------------------------------------------640.500001281.000001921.500002562.000003202.500003843.000004483.500005124.000005764.500006405.000007045.500007686.000008326.500008967.000009607.500001,0248.000001,0888.500001,1529.000001,2169.500001,28010.00000

SizeforEst(MB):用以评估的streamspool大小

SizeFactor:streamspool大小的比例因子

EstSpillCount:评估出的当使用该大小的流池时message溢出到磁盘的数量ESTD_SPILL_COUNT

EstSpillTime(s):评估出的当使用该大小的流池时message溢出到磁盘的耗时,单位为秒ESTD_SPILL_TIME

EstUnspillCount:评估的当使用该大小的流池时messageunspill即从磁盘上读取的数量ESTD_UNSPILL_COUNT

EstUnspillTime(s):评估的当使用该大小的流池时messageunspill即从磁盘上读取的耗时,单位为秒ESTD_UNSPILL_TIME

该环节是对缓冲池中各类型(class)块等待的汇总信息,wait的原因一般是bufferbusywaits和readbyothersession

class数据块的class,一个oracle数据块即有class属性还有type属性,数据块中记录type属性(KCBH),而在bufferheader里存有class属性(X$BH.class)

Waits:该类型数据块的等待次数

AvgTime(ms):该类型数据块平均每次等待的耗时,单位ms

如果用户正使用undo_management=AUTO的SMU则一般不会因为rollbacksegment过少而引起undoheaderblock类块的等待

对于INSERT而引起的buffer争用等待:

1、对于手动segment管理MSSM考虑增加Freelists、FreelistGroups

2、使用ASSM,当然ASSM本身没什么参数可调

对于INSERTONINDEX引起的争用:

EnqueueType(RequestReason)enqueue队列的类型,大家在研究enqueue问题前至少搞清楚enqueuetype和enqueuemode,enqueuetype是队列锁所要保护的资源如TM表锁CF控制文件锁,enqueuemode是持有队列锁的模式(SS、SX、S、SSX、X)

Requests:申请对应的enqueuetype资源或者队列转换(enqueueconversion例如S转SSX)的次数

SuccGets:对应的enqueue被成功申请或转换的次数

FailedGets:对应的enqueue的申请或者转换失败的次数

Waits:由对应的enqueue的申请或者转换而造成等待的次数

主要的enqueue等待事件:

UndoExtent有三种状态active、unexpired、expired

active=>extent中包括了活动的事务,active的undoextent一般不允许被其他事务重用覆盖

NumUndoBlocks(K)指被消费的undo数据块的数量,(K)代表要乘以1000才是实际值;可以用该指标来评估系统对undoblock的消费量,以便基于实际负载情况来评估UNDO表空间的大小

MaxTxConcy该时段内最大的事务并发量

STO/OOSSTO指ORA-01555SnapshotTooOld错误出现的次数;OOS–指OutofSpacecount错误出现的次数

uS–unexpiredStolen尝试从未过期的undoextent中偷取undospace的次数

uR–unexpiredReleased从未过期的undoextent中释放的块数目

uU–unexpiredreUsed未过期的undoextent中的block被其他事务重用的块数目

eS–expiredStolen尝试从过期的undoextent中偷取undospace的次数

eR–expiredReleased从过期的undoextent中释放的块数目

eU–expiredreUsed过期的undoextent中的block被其他事务重用的块数目

LatchActivitySnaps:70719-70723->"GetRequests","PctGetMiss"and"AvgSlps/Miss"arestatisticsforwilling-to-waitlatchgetrequests->"NoWaitRequests","PctNoWaitMiss"areforno-waitlatchgetrequests->"PctMisses"forbothshouldbeverycloseto0.0PctAvgWaitPctGetGetSlpsTimeNoWaitNoWaitLatchNameRequestsMiss/Miss(s)RequestsMiss--------------------------------------------------------------------------AQdeqhashtablelatch40.000N/AASMKeyedstatelatch9,0480.10.200N/AASMallocation15,0170.20.810N/AASMdbclientlatch72,7450.000N/AASMmapheaders5,8600.60.610N/AASMmaploadwaitinglis1,4620.000N/AASMmapoperationfreeli63,5390.10.410N/AASMmapoperationhasht76,484,4470.11.0660N/A

latchnameLatch闩的名字

GetRequestslatch被以willing-to-wait模式申请并获得的次数

PctGetMissmiss是指latch被以willing-to-wait模式申请但是申请者必须等待的次数,PctGetMiss=Miss/GetRequests;miss可以从后面的LatchSleepBreakdown获得

AvgSlps/MissSleep是指latch被以willing-to-wait模式申请最终导致session需要sleep以等待该latch的次数;AvgSlps/Miss=Sleeps/Misses;Sleeps可以从后面的LatchSleepBreakdown获得

NoWaitRequests指latch被以no-wait模式来申请的次数

PctNoWaitMiss以no-wait模式来申请latch但直接失败的次数

对于高并发的latch例如cachebufferschains,其PctMisses应当十分接近于0

一般的调优原则:

如果latch:cachebufferschains是Top5事件,则需要考虑优化SQL减少全表扫描并减少TopbuffergetsSQL语句的逻辑读

如果latch:redocopy、redoallocation等待较多,则可以考虑增大LOG_BUFFER

如果latch:librarycache发生较多,则考虑增大shared_pool_size

misses是指latch被以willing-to-wait模式申请但是申请者必须等待的次数

所以一般来说9i以后的misses=Sleeps+SpinGets,虽然不是绝对如此

Sleeps是指latch被以willing-to-wait模式申请最终导致session需要sleep以等待该latch的次数

SpinGets以willing-to-wait模式去申请latch,在miss之后以spin方式获得了latch的次数

latchnameLatch闩的名字where:指哪些代码路径内核函数持有过这些该latch,而不是哪些代码路径要申请这些latch;例如kcbgtcr函数的作用是GetablockforConsistentread,其持有latch:cachebufferschain是很正常的事情

NoWaitMisses:以no-wait模式来申请latch但直接失败的次数

Sleeps:指latch被以willing-to-wait模式申请最终导致session需要sleep以等待该latch的次数timeofsleepsresultedinmakingthelatchrequest

WaiterSleeps:等待者休眠的次数timesofsleepsthatwaitersdidforeachwhere;Sleep是阻塞者等待的次数,WaiterSleeps是被阻塞者等待的次数

MutexType

Mutex的类型其实就是mutex对应的客户的名字,在版本10.2中基本只有KKS使用Mutex,所以仅有3种:

11g中增加了LibraryCache

Location发起对该Mutex申请的代码路径codelocation,而不是还持有该Mutex的代码路径或曰内核函数

10.2中最常见的下面的几个函数

kkspsc0-负责解析游标–检测我们正在解析的游标是否有对象的parentcursorheap0存在

kksfbc–负责找到合适的子游标或者创建一个新的子游标

kksFindCursorstat

Sleeps:

若该Mutex在SPIN之后仍未被释放,则该进程针对申请的mutex进入对应的mutexwait等待事件中。实际进程的等待事件和等待方式由mutex的类型锁决定,例如Cursorpin、CursorParent。举例来说,这种等待可能是阻塞等待,也可以是sleep。

V$MUTEX_SLEEP_HISTORY视图的GETS列仅在成功申请到一个Mutex时才增加。

owner:数据段的所有者

TablespaceName:数据段所在表空间名

ObjectName:对象名

SubobjectName:子对象名,例如一个分区表的某个分区

objType:对象类型一般为TABLE/INDEX或者分区或子分区

LogicalReads:该数据段上发生过的逻辑读,单位为块数*次数

%Total:占总的逻辑读的百分比,(当前对象上发生过的逻辑读/TotalDB逻辑读)

PhysicalReads:该数据段上发生过的物理读,单位为块数*次数

%Total:占总的物理读的百分比,(当前对象上发生过的逻辑读/TotalDB逻辑读)

PhysReadRequests:物理读的申请次数

%Total:(该段上发生的物理读的申请次数/physicalreadIOrequests)

UnOptimizedReadsUnOptimizedReadReqs=PhysicalReadReqts–OptimizedReadReqs

OptimizedReadRequests是指哪些满足ExadataSmartFlashCache(ortheSmartFlashCacheinOracleExadataV2(Notethatdespitesamename,conceptanduseof‘SmartFlashCache’inExadataV2isdifferentfrom‘SmartFlashCache’inDatabaseSmartFlashCache)).的物理读次数。满足从smartflashcache走的读取申请呗认为是optimized,因为这些读取要比普通从磁盘走快得多。

当用户不在使用Exadata时,则UnOptimizedReadReqs总是等于PhysicalReadReqts

%Total:(该段上发生的物理读的UnOptimizedReadReqs/(physicalreadIOrequests–physicalreadrequestsoptimized))

SegmentsbyOptimizedReadsDB/Inst:MAC/MAC2Snaps:70719-70723->TotalOptimizedReadRequests:33,124,894->CapturedSegmentsaccountfor45.2%ofTotalTablespaceSubobjectObj.OptimizedOwnerNameObjectNameNameTypeReads%Total--------------------------------------------------------------------------CONTENT_OWDATA_TSMZ_CONTENT_PROVIDER_TABLE2,995,7669.04CONTENT_OWDATA_TSMZ_PRODUCT_ATTRIBUTETABLE1,489,0004.50CONTENT_OWDATA_TSMZ_PRODUCTTABLE1,276,3503.85CONTENT_OWDATA_TSMZ_AUDIO_FILETABLE890,7752.69CONTENT_OWINDEX_TSMZ_AM_REQUEST_IX3INDEX816,0672.46关于optimizerdread上面已经解释过了,这里的单位是request次数

%Total:(该段上发生的物理读的OptimizedReadReqs/physicalreadrequestsoptimized)

SegmentsbyDirectPhysicalReadsDB/Inst:MAC/MAC2Snaps:70719-70723->TotalDirectPhysicalReads:14,118,552->CapturedSegmentsaccountfor94.2%ofTotalTablespaceSubobjectObj.DirectOwnerNameObjectNameNameTypeReads%Total--------------------------------------------------------------------------CONTENT_OWSONG_TSMZ_SONGTABLE7,084,41650.18CONTENT_OWDATA_TSMZ_CS_WORK_PENDING_RTABLE4,839,98434.28CONTENT_OWDATA_TSMZ_PUBLICATIONTABLE1,361,1339.64CONTENT_OWDATA_TSSYS_LOB0000203660C00LOB5,904.04CONTENT_OWDATA_TSSYS_LOB0000203733C00LOB1,656.01Directreads直接路径物理读,单位为块数*次数%Total(该段上发生的directpathreads/Totalphysicalreadsdirect)

PhysicalWrites,物理写单位为块数*次数

Total%(该段上发生的物理写/Totalphysicalwrites)

PhysWriteRequests物理写的请求次数,单位为次数

%Total(该段上发生的物理写请求次数/physicalwriteIOrequests)

SegmentsbyDirectPhysicalWritesDB/Inst:MAC/MAC2Snaps:70719-70723->TotalDirectPhysicalWrites:29,660->CapturedSegmentsaccountfor18.3%ofTotalTablespaceSubobjectObj.DirectOwnerNameObjectNameNameTypeWrites%Total--------------------------------------------------------------------------SYSSYSAUXWRH$_ACTIVE_SESSION_1367_70520TABLE4,60115.51CONTENT_OWDATA_TSSYS_LOB0000203733C00LOB6202.09CONTENT_OWDATA_TSSYS_LOB0000203660C00LOB134.45CONTENT_OWDATA_TSSYS_LOB0000203779C00LOB46.16CONTENT_OWDATA_TSSYS_LOB0000203796C00LOB41.14DirectWrites直接路径写,单位额为块数*次数%Total为(该段上发生的直接路径写/physicalwritesdirect)

DBBlockChanges,单位为块数*次数

%Total:(该段上发生blockchanges/dbblockchanges)

SegmentsbyGlobalCacheBufferBusyDB/Inst:MAC/MAC2Snaps:70719-7072->%ofCaptureshows%ofGCBufferBusyforeachtopsegmentcompared->withGCBufferBusyforallsegmentscapturedbytheSnapshotGCTablespaceSubobjectObj.Buffer%ofOwnerNameObjectNameNameTypeBusyCapture--------------------------------------------------------------------------CONTENT_OWINDEX_TSMZ_AM_REQUEST_IX3INDEX2,135,52850.07CONTENT_OWDATA_TSMZ_CONTENT_PROVIDER_TABLE652,90015.31CONTENT_OWLOB_8K_TSMZ_ASSET_WORK_EVENT_INDEX552,16112.95CONTENT_OWLOB_8K_TSMZ_CS_WORK_NOTE_RE_I_2013_1_36INDEX113,0422.65CONTENT_OWLOB_8K_TSMZ_CS_WORK_INFO_PART_2013_5_35INDEX98,1342.30GCBufferBusy数据段上发挥僧gcbufferbusy的次数,数据源dba_hist_seg_stat.gc_buffer_busy_delta

%Total:(该段上在本节点接收的GlobalCRblocks/gccrblocksreceived)

%Total:(该段上在本节点接收的globalcachecurrentblocks/gccurrentblocksreceived)

DictionaryCacheStatsDB/Inst:MAC/MAC2Snaps:70719-70723->"PctMisses"shouldbeverylow(<2%inmostcases)->"FinalUsage"isthenumberofcacheentriesbeingusedGetPctScanPctModFinalCacheRequestsMissReqsMissReqsUsage-------------------------------------------------------------------------dc_awr_control872.30N/A61dc_global_oids1,1347.80N/A013dc_histogram_data6,119,0270.90N/A011,784dc_histogram_defs1,898,7142.30N/A05,462dc_object_grants17526.90N/A04dc_objects10,254,5140.20N/A03,807dc_profiles8,4520.00N/A02dc_rollback_segments3,031,0440.00N/A01,947dc_segments1,812,2431.40N/A103,595dc_sequences15,78369.60N/A15,78220dc_table_scns702.90N/A01dc_tablespaces1,628,1120.00N/A037dc_users2,037,1380.00N/A052globaldatabasename7,6980.00N/A01outstanding_alerts26499.60N/A81sch_lj_oids517.80N/A01

DictionaryCache字典缓存也叫rowcache

Cache字典缓存类名kqrstcid<=>kqrsttxtcid=3(dc_rollback_segments)

GetRequests申请获取该数据字典缓存对象的次数gets

Miss:GETMISSES申请获取该数据字典缓存对象但miss的次数

PctMiss:GETMISSES/Gets,Miss的比例,这个pctmiss应当非常低小于2%,否则有出现大量rowcachelock的可能

ScanReqs:扫描申请的次数,kqrssc、kqrpScan、kqrpsiv时发生scan会导致扫描数增加kqrstsrq++(scanrequests),例如migratetablespace时调用kttm2b函数为了安全删除uet$中的记录会callbackkqrpsiv(usedextentcache),实际很少见

PctMiss:SCANMISSES/SCANS

ModReqs:申请修改字典缓存对象的次数,从上面的数据可以看到dc_sequences的modreqs很高,这是因为sequence是变化较多的字典对象

FinalUsage:包含有有效数据的字典缓存记录的总数也就是正在被使用的rowcache记录USAGENumberofcacheentriesthatcontainvaliddata

DictionaryCacheStats(RAC)DB/Inst:MAC/MAC2Snaps:70719-70723GESGESGESCacheRequestsConflictsReleases-------------------------------------------------------------dc_awr_control1420dc_global_oids880102dc_histogram_defs43,518043,521dc_objects21,6081721,176dc_profiles101dc_segments24,9741424,428dc_sequences25,17810,644347dc_table_scns202dc_tablespaces1650166dc_users1190119outstanding_alerts4788250sch_lj_oids404

GESRequestkqrstilrtotalinstancelockrequests,通过全局队列服务GES来申请instancelock的次数

GESrequest申请的原因可能是dumpcacheobject、kqrbfrLCK进程要backgroundfreesomeparentobjects释放一些parentobjects等

GESConflictskqrstifrinstancelockforced-releases,LCK进程以AST方式释放锁的次数,仅出现在kqrbrl中

GESReleaseskqrstisrinstancelockself-releases,LCK进程要backgroundfreesomeparentobjects释放一些parentobjects时可能自增

在Oracle10g中,ORDEREDSequence还可能在高并发下造成大量DFSlockHandle等待,由于bug5209859

LibraryCacheActivityDB/Inst:MAC/MAC2Snaps:70719-70723->"PctMisses"shouldbeverylowGetPctPinPctInvali-NamespaceRequestsMissRequestsMissReloadsdations-----------------------------------------------------------------------ACCOUNT_STATUS8,4360.30N/A00BODY8,6970.715,5370.7490CLUSTER3174.73214.700DBLINK9,2120.10N/A00EDITION4,4310.08,6600.000HINTSETOBJECT1,0279.51,02714.400INDEX79218.279218.200QUEUE100.01,7330.000RULESET0N/A887.570SCHEMA8,1690.00N/A00SQLAREA533,4094.8-4,246,727,944101.144,864576SQLAREABUILD71,50065.50N/A00SQLAREASTATS41,00890.341,00890.310TABLE/PROCEDURE320,3100.61,033,9913.625,3780TRIGGER8470.038,4420.31100

NameSpacelibrarycache的命名空间

GETSRequests该命名空间所包含对象的librarycachelock被申请的次数

GETHITS对象的librarycachehandle正好在内存中被找到的次数

PctMisses:(1-(GETHITS/GETSRequests))*100

PinRequests该命名空间所包含对象上pin被申请的次数

PINHITS要pin的对象的heapmetadata正好在sharedpool中的次数

PctMiss(1-(PINHITS/PinRequests))*100

Reloads指从objecthandle被重建开始不是第一次PIN该对象的PIN,且该次PIN要求对象从磁盘上读取加载的次数;Reloads值较高的情况建议增大shared_pool_size

INVALIDATIONS由于以来对象被修改导致该命名空间所包含对象被标记为无效的次数

LibraryCacheActivity(RAC)DB/Inst:MAC/MAC2Snaps:70719-70723GESLockGESPinGESPinGESInvalGESInvali-NamespaceRequestsRequestsReleasesRequestsdations-------------------------------------------------------------------------ACCOUNT_STATUS8,4360000BODY015,49715,49700CLUSTER32132132100DBLINK9,2120000EDITION4,4314,4314,43100HINTSETOBJECT1,0271,0271,02700INDEX79279279200QUEUE81,7331,73300RULESET08800SCHEMA4,2260000TABLE/PROCEDURE373,163704,816704,81600TRIGGER038,43038,43000

GESLockRequest:dlm_lock_requestsLockinstance-lockReQuests申请获得lockinstancelock的次数

GESPINrequest:DLM_PIN_REQUESTSPininstance-lockReQuests申请获得pininstancelock的次数

GESPinReleasesDLM_PIN_RELEASESreleasethepininstancelock释放pininstancelock的次数

GESInvalRequestsDLM_INVALIDATION_REQUESTSgettheinvalidationinstancelock申请获得invalidationinstancelock的次数

GESInvali-dationsDLM_INVALIDATIONS接收到其他节点的invalidationpings次数

ProcessMemorySummaryDB/Inst:MAC/MAC2Snaps:70719-70723->B:BeginSnapE:EndSnap->Allrowsbelowcontainabsolutevalues(i.e.notdiffedovertheinterval)->MaxAllocisMaximumPGAAllocationsizeatsnapshottime->HistMaxAllocistheHistoricalMaxAllocationforstill-connectedprocesses->orderedbyBegin/Endsnapshot,Alloc(MB)descHistAvgStdDevMaxMaxAllocUsedAllocAllocAllocAllocNumNumCategory(MB)(MB)(MB)(MB)(MB)(MB)ProcAlloc---------------------------------------------------------------------BOther16,062.7N/A6.166.63,3703,3702,6122,612SQL5,412.24,462.92.289.54,4834,4832,5082,498Freeable2,116.4.0.96.3298N/A2,2662,266PL/SQL94.069.8.0.0112,6102,609EOther15,977.3N/A6.166.93,3873,3872,6162,616SQL5,447.94,519.02.289.84,5054,5052,5142,503Freeable2,119.9.0.96.3297N/A2,2732,273PL/SQL93.269.2.0.0112,6142,613

B:开始快照E:结束快照

该环节列出PGA中各分类的使用量

Category分类名,包括”SQL”,“PL/SQL”,“OLAP”和”JAVA”.特殊分类是“Freeable”和”Other”.Freememory是指哪些OS已经分配给进程,但没有分配给任何分类的内存。“Other”是已经分配给分类的内存,但不是已命名的分类

Alloc(MB)allocated_total该分类被分配的总内存

Used(MB)used_total该分类已使用的内存

AvgAlloc(MB)allocated_avg平均每个进程中该分类分配的内存量

StdDevAlloc(MB):该分类分配的内存在每个进程之间的标准差

HistMaxAlloc(MB)MAX_ALLOCATED_MAX:目前仍链接着的进程该分类最大分配过的内存量:HistMaxAllocistheHistoricalMaxAllocationforstill-connectedprocesses

NumProcnum_processes进程数目

NumAllocNON_ZERO_ALLOCS分配了该类型内存的进程数目

SGAMemorySummaryDB/Inst:MAC/MAC2Snaps:70719-70723EndSize(Bytes)SGAregionsBeginSize(Bytes)(ifdifferent)--------------------------------------------------------------------DatabaseBuffers20,669,530,112FixedSize2,241,880RedoBuffers125,669,376VariableSize10,536,094,376-------------------sum31,333,535,744

粗粒度的sga区域内存使用信息,EndSize仅在于beginsize不同时打印

Pool内存池的名字

Name内存池中细分组件的名字例如KGLH0存放KELHeap0、SQLA存放SQL执行计划等

BeginMB快照开始时该组件的内存大小

EndMB快照结束时该组件的内存大小

%Diff差异百分比

特别注意由于AMM/ASMM引起的sharedpool收缩一般在sgabreakdown中可以提现例如SQLA、KQR等组件大幅缩小,可能导致一系列的解析等待cursor:PinSonX、rowcachelock等

CaptureName:Streams捕获进程名

CapturedPerSecond:每秒挖掘出来的message条数

EnqueuedPerSecond:每秒入队的message条数

ApplyNameStreams应用Apply进程的名字

AppliedTPS:每秒应用的事务数

PctDB:所有的DB事务中apply处理的比例

PctRBK:事务rollback回滚的比例

AppliedMPS:每秒应用的message数

DequeueTPM:每毫秒出队的message数

ResourceLimitStatsDB/Inst:MAC/MAC2Snap:70723->onlyrowswithCurrentorMaximumUtilization>80%ofLimitareshown->orderedbyresourcenameCurrentMaximumInitialResourceNameUtilizationUtilizationAllocationLimit--------------------------------------------------------------------------ges_procs2,6128,0071000310003processes2,6158,0111000010000

数据源于dba_hist_resource_limit

注意这里仅列出当前使用或最大使用量>80%*最大限制的资源名,如果没有列在这里则说明资源使用量安全CurrentUtilization当前对该资源(包括EnqueueResource、Lock和processes)的使用量

MaximumUtilization从最近一次实例启动到现在该资源的最大使用量

InitialAllocation初始分配值,一般等于参数文件中指定的值

Limit实际上限值

init.oraParametersDB/Inst:MAC/MAC2Snaps:70719-70723EndvalueParameterNameBeginvalue(ifdifferent)----------------------------------------------------------------------------_compression_compatibility11.2.0_kghdsidx_count4_ksmg_granule_size67108864_shared_pool_reserved_min_all4100archive_lag_target900audit_file_dest/u01/app/oracle/admin/MAC/adumaudit_trailOScluster_databaseTRUEcompatible11.2.0.2.0control_files+DATA/MAC/control01.ctl,+RECOdb_16k_cache_size268435456db_block_size8192db_cache_size19327352832db_create_file_dest+DATA

ParameterName参数名

Beginvalue开始快照时的参数值

Endvalue结束快照时的参数值(仅在发生变化时打印)

GlobalCRServedStatsDB/Inst:MAC/MAC2Snaps:70719-70723StatisticTotal------------------------------------------------CRBlockRequests403,703CURRENTBlockRequests444,896DataBlockRequests403,705UndoBlockRequests94,336TXBlockRequests307,896CurrentResults652,746Privateresults21,057ZeroResults104,720DiskReadResults69,418FailResults508FairnessDownConverts102,844FairnessClears15,207FreeGCElements0Flushes105,052FlushesQueued0FlushQueueFull0FlushMaxTime(us)0LightWorks71,793Errors117

GlobalCURRENTServedStatsDB/Inst:MAC/MAC2Snaps:70719-70723->Pins=CURRENTBlockPinOperations->Flushes=RedoFlushbeforeCURRENTBlockServedOperations->Writes=CURRENTBlockFusionWriteOperationsStatisticTotal%<1ms%<10ms%<100ms%<1s%<10s--------------------------------------------------------------Pins73,01812.2775.968.492.211.08Flushes79,3365.9850.1714.4519.459.95Writes102,1893.1435.2319.3433.269.03

Timetoprocesscurrentblockrequest=(pintime+flushtime+sendtime)

PinsCURRENTBlockPinOperations,PIN的内涵是处理一个BAST不包含对globalcurrentblock的flush和实际传输

ThepintimerepresentshowmuchtimeisrequiredtoprocessaBAST.Itdoesnotincludetheflushtimeandthesendtime.Theaveragepintimeperblockservedshouldbeverylowbecausetheprocessingconsistsmainlyofcodepathandshouldneverbeblocked.

Write指fusionwritenumberofwriteswhichweremediated;节点之间写脏块需求相互促成的行为KJBL.KJBLREQWRITEgcswriterequestmsgs、gcswritesrefused

%<1ms%<10ms%<100ms%<1s%<10s分别对应为pin、flush、write行为耗时的比例

例如在上例中flush和write在1s到10s之间的有9%,在100ms和1s之间的有19%和33%,因为flush和write都是IO操作所以这里可以预见IO存在问题,延迟较高

InstNo节点号

BlockClass块的类型

CRBlocksReceived该节点上该类型CR块的接收数量

CRImmed%:CR块请求立即接收到的比例

CRBusy%:CR块请求由于远端争用而没有立即接收到的比例

CRCongst%:CR块请求由于远端负载高而没有立即接收到的比例

CurrentBlocksReceived该节点上该类型Current块的接收数量

CurrentImmed%:Current块请求立即接收到的比例

CurrentBusy%:Current块请求由于远端争用而没有立即接收到的比例

CurrentCongst%:Current块请求由于远端负载高而没有立即接收到的比例

Congst%的比例应当非常低不高于2%,Busy%很大程度受到IO的影响,如果超过10%一般会有严重的gcbufferbusyacquire/release

GlobalCacheLoadProfile

+((‘gcsmessagessent’+‘gesmessagessent’+‘gcsmsgsreceived’+‘gcsmsgs

received’)*200)/1024/ElapsedTime

GlobalCacheEfficiencyPercentages(Targetlocal+remote100%)

GlobalCacheandEnqueueServices–WorkloadCharacteristics

THE END
1.PlayStatus项目常见问题解决方案问题2:为什么在 macOS Big Sur 11.0-11.2 版本中使用 Apple Music 时,歌曲详情不显示? 解决步骤:这个问题是由于 macOS Big Sur 11.0-11.2 版本中 Apple Music 的一个已知 bug 引起的。目前解决方法有限,建议: 更新到最新的 macOS 版本,查看是否修复了该问题。 https://blog.csdn.net/gitblog_00619/article/details/144207144
2.解决攻略小红书加载卡顿解析,为何一直加载不出内容,解决攻略一览 小红书不停加载怎么办1、这是因为软件存储出现问题,导致文件加载不出来,将软件的缓存数据清空即可解决问题。工具:红米5手机。打开手机屏幕,点击屏幕上的设置图标。向下滑动页面,在页面下方找到应用管理,点击并打开应用管理。在在软件 http://h5.jk393.com/tags-553.html
3.iOStabbar图标不能显示mob64ca12d9b014的技术博客在iOS开发中,TabBar是一个常用的用户界面元素,它允许用户在不同的视图控制器之间切换。TabBar不仅可以提供视图控制器的快速访问,还能通过图标和文字向用户传达每个选项的功能。然而,有时开发者会遇到TabBar图标无法正确显示的问题。本文将通过分析原因和解决方案来帮助开发者解决此类问题。 https://blog.51cto.com/u_16213338/12713543
4.《AppleMusic风格指南》更新欢迎查看《Apple Music 风格指南》了解重要更新。 主要的新增规范包括: 2.18. 制作人员元数据的准确性:请务必提供完整、准确的制作人员元数据。若人员信息尚不明确,或参与者为匿名,则无需提交相关信息。请勿用“待定”或“待决”等词代替。 2.19. 被采样艺人:如果曲目采用了现有的免费音频或可供任何人借用、购买、https://itunespartner.apple.com/zh-cn/music/support/5488-apple-music-style-guide-update-2024
5.Alibabab站禁止转播404入口原因何在洋葱软件园社会新闻-,《致命魅惑》在线观看-致命魅惑-4集正在播放-怪兽影视,悖论BY流苏全文笔趣阁小说最新章节悖论BY流苏全文笔趣,「公交车500部」公交车500部下载第四十四章信心满满-。 12月06日,【4K 奥特无缝衔接】震撼大赏!纵享丝滑到飞起的视觉盛宴!!,日产新MPV正式确定国产-满足家庭出行需求-带来更高性价比,粉色视频http://m.ouzhehua.com/v/video/30278104_20241122.shtml?id=6659-3260660-scm
6.揭秘苹果手机区域限制,iPhone显示区域受限真相大起底!1. **应用不可用**:该应用可能在你所在的地理位置不可用,或者开发者没有在你所在的地区发布该应用。 2. **苹果公司政策**:苹果公司在某些国家或地区没有开设 *** App Store,或者该地区的法律法规禁止某些应用的下载。 3. **应用下架**:某些应用可能因不符合规范、长期不更新或有灰色成分而被下架。 4. http://www.hnshmcs.com/8a3CA29FC023.html
7.韩小圈无法获取最新韩剧,原因解析与解决方案公路管理摘要:近期用户反映韩小圈无法搜索到最新的韩剧内容。经过调查,可能是由于版权问题或平台更新导致的。为了解决这个问题,用户可以尝试更新韩小圈至最新版本,或者检查网络连接是否正常。也可以尝试其他途径获取韩剧资源,如官方正版http://m.nan-zhou.cn/post/1303.html
8.证券b站禁止转播404入口原因何在洋葱软件园社会新闻12月08日,如何看待女病毒学家用病毒疗法治疗癌症,「女王奴」|女王奴免费阅读无弹窗,《成人网小儿不宜》免费不卡在线观看,《火花电影免费完整版》高清正片无广告免费观看,「补课老师肉H短篇」|补课老师肉H短篇章节列表,《艳鬼在你左右》免费高清在线观看,「锁愫(民国H)」|锁愫(民国H)免费阅读无弹窗,眉梢1http://m.ruhrg.com/v/video/20241207/9098651.shtml
9.求助podcast总是出现单集不可用该怎么解决呀如果是英文的 那就是被墙了 如果是中文的话,就是音频本身有问题或者不符合审核要求正在被撤回替换 赞 回应 这不是很正经 2022-06-22 13:21:14 一般这种我都是挂个就可以听了 赞(1) 回应 AronVillen 2022-07-02 23:20:47 我感觉是网络不好,推出程序,刷新,切换流量Wi-Fi之类的就又好了 https://m.douban.com/group/topic/261028174/
10.上下文命令刷新数据上下文菜单不可用F5 键下拉刷新 收藏项上下文菜单悬停按钮F、Ctrl+S轻扫收藏 一般情况下,应在项的上下文菜单中提供用于项的所有命令。无论是何种输入类型,上下文菜单都可供用户访问,且应包含用户可以执行的所有上下文命令。 对于经常访问的命令,请考虑使用输入快捷方式。输入快捷方式使用户可以基于其输入设备快速https://docs.microsoft.com/zh-cn/windows/uwp/controls-and-patterns/collection-commanding
11.实施Cisco统一通信VoIP和QoS(CVOICE)学习指南(第4版)配置MGCP网关相对容易,因为呼叫代理维护所有的呼叫路由,因此也就不需要在网关上配置所有可能需要的dial peer(拨号对等体)。该环境的缺点是呼叫代理必须总是可用的。在缺少 CUCM 的时候(例如 WAN 断开的这段时间内),Cisco MGCP 网关可以使用 SRST(可生存远程站点电话,Survivable Remote Site Telephony)和 MGCP 回退(Fahttps://www.epubit.com/bookDetails?id=N1577
12.compressor4软件中文教程.pdf用不同设置替换指定设置 31 修改指定设置 32 创建自定设置 32 创建和修改设置 35 共享设置 36 关于自动设置 36 示例:创建用于DVD 的自定群组和设置 37 检查器面板 41 使用标记和标志帧 41 标记和标志帧概述 42 手动添加和移除标记 44 添加压缩或Podcast 标记 45 纯文本章节标记列表 45 设定标志帧 46 预览https://max.book118.com/html/2021/0127/5002222044003120.shtm
13.下载中心下载中心 您可以找到关于操作系统、套件、桌面实用程序等 Synology 产品的文档和文件,以便享有多种新功能。 请选择您使用的产品类别和相应型号。 NAS DS3612xs 零配件中心 在此查找您 Synology 产品的更换零件。 更多信息https://www.synology.cn/support/download/DS3612xs
14.微博正文你好,订阅了,但不能播放,显示单集不可用。谢谢! PrettyNuts美丽坚果:谢谢告知 也不能下载吗? PrettyNuts美丽坚果回复@尘世里的鱼:好的 2019-12-19 keruta0 小宇宙可以播放 PrettyNuts美丽坚果: 谢谢告知 2020-5-25 Enerpack 请问,podcast多久更新一次? PrettyNuts美丽坚果:争取1-2周就会更新 2020-2-17https://m.weibo.cn/status/4451117557223469
15.重庆市渝北金港国际实验小**采购群晖ds1819+进行网上建设不确定符合您需求的 NAS 型号?让我们来帮您轻松选择。 由DSM 提供支持,以实现下一代数据管理 解决方案 数据管理对于监控客户案例 按应用程序 DiskStation Manager 文件管理 虚拟化 用户管理 系统管理 安全性 工作效率 数据保护 多媒体 查看所有应用程序 https://synologynas.cn/cdkhcase?article_id=1705
16.WP7手机从新手到老鸟的进化过程它除了播放音乐之外,它还是一个功能强大的媒体库管理工具;同时,通过Zune Marketplace你还可以方便的下载各种音乐、视频等内容;如果你有Zune Pass订阅最好了,就可以免费下载Zune Marketplace中的所有内容;当然,现在安装Zune应用程序并不只是简单的为了听听歌管理管理多媒体内容,更重要的是它也可以访问Windows Phone 7的https://m.360docs.net/doc/edebe74bfe4733687e21aafd.html