【Oracle性能调优】Oracle Statspack报告中各项指标含义详解~~调优必看!

Oracle Statspack报告中各项指标含义详解!
O NtOQ'JWf9390331 ITPUB个人空间_o4H`{xW
Data Buffer Hit Ratio#
$[DHv ]Jjm3\M9390331数据块在数据缓冲区中的命中率,通常应该在90%以上,否则考虑加大 db_block_buffers(9i 以上可是db_cache_size) ITPUB个人空间T.ft jNg7foM A
ITPUB个人空间*Px+UA\Y kpu
Buffer Nowait Ratio# ITPUB个人空间0e&s"[(V~6M
在缓冲区中获取buffer 的未等待比率 ITPUB个人空间5?WWC ^ HZ/~1^
ITPUB个人空间:i_H"SB3h%]M"?
Library Hit Ratio#
~h$n8K e$e3}#_im7XAP9390331 ITPUB个人空间k? u^A&D*p ~K
主要代表着 sql在共享区的命中率,通常在98%以上
#Y} _RM*ng9390331 ITPUB个人空间Q]'bU t!I.[E
In Memory Sort Ratio#ITPUB个人空间J\]4w2Bb@
ITPUB个人空间f%JEX0b-Nx
如果过低说明有大量的排序在临时表空间中进行,可尝试增加sort_area_size
+k,icU4Bo9390331
:V])tK`9390331 Redo Nowait Ratio#ITPUB个人空间PL"J^ hm._A

6Fy@3_ x&S9390331写日志的不等待比率,太低可调整log_buffer(增加)和 _log_io_size(减小,默认为1/3*log_buffer/log_block_size,使得 _log_io_size 为合适的值,比如128k/log_block_size)
0dE j9V,?9390331
N G8oB:H E bZ\9390331 Soft Parse Ratio#'T5DHP/RC I.?9390331 ITPUB个人空间;qUP mO&["w%v

:VYu9U#T9390331近似当作sql在共享区的命中率,通常高代表使用了绑定变量,太低需要调整应用使用绑定变量,或者参考cursor_sharing = force (9i 中增加了 similar ) ITPUB个人空间Qh q4WU

C?a5hC7lf W\%M9390331 Latch Hit Ratio#ITPUB个人空间iDv Bkk{f9Yw*j
ITPUB个人空间W[q%Va8\#_R3]
内部结构维护锁命中率,高于99%,通常低是因为shared_pool_size过大和没有使用绑定变量导致硬解析过多,可参考 _spin_count 参数设置
IJqZ"xdb9390331 ITPUB个人空间,F-aXhqv&~
Percent Non-Parse CPU# ITPUB个人空间kv$I-o.d ?HA:j2Y2`
查询实际运行时间/(查询实际运行时间+sql解析时间),太低表示解析消耗时间过长
3\y"D'C6~9390331 ITPUB个人空间8P \!rka7_
Percent Parse CPU to Parse Elapsed# ITPUB个人空间@.TMX dk j1`}%]I0H
ITPUB个人空间!KL T-z,\
解析实际所用时间/(解析实际所用时间+解析中等待资源时间),越高越好
_0O~6hF pQ5u9390331 ITPUB个人空间 e8h'~NOr[s bW
Execute to Parse Percent#ITPUB个人空间w'ctd A.lI
ITPUB个人空间7p"BQ R#ct7_'@2g
该值越高表示一次解析后被重复执行的次数越多,如果过低可以考虑设置 ITPUB个人空间r5E@` IF7H
session_cached_cursors > 0 ITPUB个人空间5v&OX#{-W7v
ITPUB个人空间Wqx)G])mQ,t
Memory Usage Percent# ITPUB个人空间.Ua8T"oE v%k d:B

:O U|l[9390331共享池的使用率,应该稳定在75%--90%之间,太小浪费内存,太大则显内存不足 ITPUB个人空间AF_j(t)H!a0Z
ITPUB个人空间X;g6i\H_ lx
Percent of SQLs with Execution>1# ITPUB个人空间Se4nT `(p2\O_

`qK.h~Y ~9390331执行次数大于1的sql的比率(若太小可能是没有使用绑定变量) ITPUB个人空间9x w*N%_Z
ITPUB个人空间.gY/O"NM'U:n
Percent of Memory for SQl with Execution>1#$a5ar,c;v3k9390331
] t8`g'l u!Z$d9390331执行次数大于1的sql消耗内存/(所有sql消耗内存) ITPUB个人空间0|-G {C(D-vgl

7]/t+gZ~9390331 Instance Load Profile Redo Size/Sec#>#100000#   ITPUB个人空间*ou$b_ t

:M'{tDP7UJ {9390331每秒产生的日志大小(单位字节),可标志 数据库任务的繁重与否 ITPUB个人空间 h0qO@v"Hy#p

9rhy]6`C9390331 Redo Size/Tx#>#0#   ITPUB个人空间G7lrK;?
ITPUB个人空间LwT"b6YIh
平均每个事务的日志生成量 ITPUB个人空间 ~;TD,cTL^
ITPUB个人空间;e#Ho6\{L
Logical Reads/Sec(逻辑读)#>#0# ITPUB个人空间T:oqR,~}
ITPUB个人空间!o+J x4VqF [H
平均每秒产生的逻辑读,单位是block
6Ls`V\9390331
!V2Ihfvj9390331 Logical Reads/Tx#>#0# ITPUB个人空间,X~H'}|%NdD$L

"y}\ }yvKa9q*L9390331平均每个事务产生的逻辑读,单位是block
"x[d,y4V(U!ll'N9390331 ITPUB个人空间#|t6?A6k
Block Changes/Sec#>#100#  
.i/]%~|9kf9390331 ITPUB个人空间zG k"MJ-l
每秒block变化数量,数据库事务带来改变的块数量
| wD)IO1wA9390331
g)R@VE ](y9390331 Block Changes/Tx#>#0#   ITPUB个人空间b:V@ U.ltS#SJ
ITPUB个人空间5}KW H }TBM,y#zG
平均每个事务所导致的改变的块数 ITPUB个人空间4m A.sd*J.i?
ITPUB个人空间s&F7Ds4?e$c,x*c@
Physical Reads/Sec#>#100#  
^huY4c(U%[R,|E9390331
E6y9l~4VB2Oa9390331平均每秒数据库从磁盘读取的block数 ITPUB个人空间)]H-{ f:q,L}5m

1uAEc%_9390331 Physical Reads/Tx#>#0#  
*pb|mIxD9390331 ITPUB个人空间n8^6^P)d6t?/L%c
平均每个事务从磁盘读取的block数 ITPUB个人空间/W-Z0t0WW;Jj!p
ITPUB个人空间/t&R+L:OaH+W
Physical Write/Sec#>#50#  
,Z%K)b+? j9390331
2TpN6x9t7m-@!G}:r`9390331平均每秒写磁盘的block数
q7J KXe:F*UE9390331 ITPUB个人空间P Gc%uU [h(g
Physical Write/Tx#>#0#   ITPUB个人空间| v7Cq/|Y

I4?_Nc&p*O9390331平均每个事务写磁盘的block数 ITPUB个人空间3p'Q-L/A}z'nI
ITPUB个人空间VLR Vd/HY0b Y8c
User Calls/Sec#>#0#  
hb)Wc4jk9390331
w Tl7Wm9390331每秒用户call次数
\Al:P3]_v9390331
3OrV+P5zr/\(zN_9390331 User Calls/Tx#>#0# ITPUB个人空间z$j0}`X`

h Xj(g S8}c ~{8W9390331每事务用户call次数
"F[#@U:B&j'uU W9390331
"V k8H s7}+~9390331 Parses/Sec#>#100#   ITPUB个人空间C&M M'r)T/xd_

-uJL t:XYW;E,j.f}9390331每秒解析次数,近似反应了每秒语句的执行次数 ITPUB个人空间4Dw'Z5A m,Y

.o%]4N;\c6J9390331 Parses/Tx#>#0#  
1f-Qh g5WY-[9390331 ITPUB个人空间L"ap]'k~#b
每事务产生的解析次数
2kcCqtOhy9390331 ITPUB个人空间*S/HX`O%S!~
Hard Parses/Sec#>#10#   ITPUB个人空间G_C ?;jgM B
ITPUB个人空间w(A AY2\4w)a
每秒产生的硬解析次数 ITPUB个人空间-SMmj1V%F

#|5v$X[pT ` y9390331 Hard Parses/Tx#>#0#  
VRN)^ GbO |9390331 ITPUB个人空间_z d]bo mIy
每事务产生的硬解析次数
&B.H1C.wrxkuD4{9390331
%J ePJ2Y1|w0F9390331 Sorts/Sec#>#20#   ITPUB个人空间u?5jDN|)_nY
ITPUB个人空间Q4DyB/p)\;iSB
每秒产生的排序次数 ITPUB个人空间RZ6^mN9r:H#C
ITPUB个人空间)X&f T4G^7B2h
Sorts/Tx#>#5#
({"f{7?%][BVJ C9390331
ITPUB个人空间#Cy)f'{"P%Z)_"s$v
每事务产生的排序次数
a!R'srm9390331 ITPUB个人空间HMwi/z7H$t `
Transactions/Sec#>#0#  
S9Ae9x)Sd R9390331
0K]3l ^Un9390331每秒产生的事务数 ITPUB个人空间Q#h]-x-A'E"o&N;V

9TP#x @ E9390331 Rows/Sort#>#0#ITPUB个人空间p8Yp4s+L&}

q`)}[f9390331每次排序所涉及到的行数
j5{0pZ%Ju7V#g9390331 ITPUB个人空间q]:^1a*b'VRd C7^
Percent of Block Changed/Read#>#0#
Q"v0XO+|Dsj9390331

*I];HW \&n$Gc e&q9390331发生变化的块数/读次数,变化的块需要从回滚段来数据
p3o2f[C6D EB q9390331 ITPUB个人空间_ L+F&b5Az&E3a/ZW
Recursive Call Percent#>#0#   ITPUB个人空间%C-Z4j&rC'l%r
ITPUB个人空间yyU#i#Z+vj v
递归操作占所有操作的比率 ITPUB个人空间K IPB.LI
ITPUB个人空间'Noxzw9?B
Rollback/Tx Percent#>#5#   ITPUB个人空间!kJ,]"J?u,[ YA
ITPUB个人空间N&^:|_M
事务回滚率(回滚开销很大) ITPUB个人空间` r$L-a.@
ITPUB个人空间FTc![8_2i
Executes/Sec#>#0#
o I8I}/Mj e9390331 ITPUB个人空间 VU0F&\N1q7U{
每秒执行次数
K i_j1W&?M/h9390331 ITPUB个人空间U6?7E6LU,e(c
Execute/Tx#>#0#   ITPUB个人空间}v-z_k|8o+eMv1D*a
ITPUB个人空间'?m r;I$n2nd
每个事务执行次数 ITPUB个人空间k3nu]/QJ+rkO\

|;vk0cj {-LY9390331 Logons/Sec --46: Logons/Tx   ITPUB个人空间!ZhQv*GA:h$TP

&X+R1mfu9390331I/O Statistics(I/O统计数据) Table Space I/O#>#0# ITPUB个人空间5Uqwe#C/a,Nw*e
表示各表空间在IO上的分布,若出现严重不均衡,则要重新考虑对象的存储规划和数据文件的磁盘规划
Xz#aCcG E%@9390331 ITPUB个人空间/O m@-H] W@
ITPUB个人空间J$ByM.wU-D)iR
Datafile I/O#>#0#  
,P @ lOs dzxc c1a9390331 ITPUB个人空间{3x*K@r7N
表示各数据文件的IO分布,若不均衡则需要重新考虑对象的存储规划 ITPUB个人空间 et{2mhTc

rA4e;r eW ~zs*L }9390331 Table I/O(表I/O)#>#0#ITPUB个人空间 qf?.L7cZp*Ke
ITPUB个人空间8C6|'S)n6x'j0n
对这些IO很大的表,要考虑放置在高速磁盘上,并且尽可能的分布在不同的磁盘上
M k|#D CpKZ B.H9390331
*s#|xt2L6u3X {|9390331 TOP SQL Top SQL with High Buffer Gets#>#0#   ITPUB个人空间n;tA(VV
ITPUB个人空间1? |9^%t*c6~,UW
这类sql进行了大量的block的读,要检查该sql是否用到了索引,或者说表上是否存在合理的索引,对于必须全表扫描的大表可以考虑recycle buffer ,对于频繁进行全表扫描的小表可以考虑keep buffer,还有一种需要注意的情况就是如果通过索引获取数据比例占表数据比例过大,比如20%(举例数据),就能导致buffer gets过大
,lj \ZKjo9390331
B#w+I7tSd$n7e9390331 Top SQL with High Physical Reads#>#0#
#t8cJe3}C9390331
ITPUB个人空间0lO?Pv%o
这类sql导致了大量的从磁盘获取数据,可能因为数据缓冲区太小,也可能是过多的全表扫描,需要考察索引是否合理,是否用到索引
D.|} `%Z\&o9390331
s1H%e ma C9390331 Top SQL with High Execution Count#>#0#
7d]N5L7t7@,lM9390331

l:wZ:_\k'^9390331这类sql是需要重点关注的,也许这些sql本身一次执行并没有消耗大量的时间或者空间,但由于频繁的执行对系统影响极大,所以只要有优化的可能到要对这些sql进行优化。还有另外一些情况,就是某些程序中可能大量频繁地使用dual表来获取一些信息(比如时间的计算等),尽可能的使这类sql转化为应用本地能解决的函数,或者还存在一些由于设计上的缺陷导致不必要的查询,都要在设计的角度避免这些查询
`*]%X$E q.f9390331
s:l'`B$MO5`9390331 Top SQL with High Shared Memory#>#0#  
nx;D2|u9390331
jG!^jc)g9390331这类sql使用了大量的内存,不一定执行的频繁,但是它可能把执行的频繁的sql涉及的一些数据挤出缓冲区,这同样将导致很多问题,所以也需要从尽可能的优化
~z3F S Pce$ozK9390331 ITPUB个人空间'J4yp Am8k2RI2u
Top SQL with High Version Count#>#20#  
n!xEG+u"Z9Dg)I9390331
a6wds l(O0F!z%P?u9390331表示多个用户的sql在字面上是一样的,或者sql虽然一样但是session的一些参数发生了改变(比如sort_area_size发生了变化)
d%z6q+C7tCt9390331
:U)h L1I^9390331 Wait Events(等待事件) alter system set mts_dispatcher#>#0#   ITPUB个人空间H!N3qR_*v

&g os,}'a/Zy9390331当会话决定执行"ALTER SYSTEM SET MTS_DISPATCHERS = "的时候等待DISPATCHERS的启动 ITPUB个人空间 K N#T/zhr1] ^@;^ qZ
ITPUB个人空间n w)nS{7n2S"V
BFILE check if exists#>#0#  
5r ixpb9390331
@'r#b;B!h9390331检查外部的bfile文件是否存在 ITPUB个人空间4} Ke6q8E*dM[ ?
ITPUB个人空间G%L PH6Y,i8?4Ip
BFILE check if open#>#0#   ITPUB个人空间 n Jhoj tV/F
ITPUB个人空间~.m-| r2c+a
检查外部的bfile文件是否已经open
C"xE$|+b1@9390331 ITPUB个人空间)Jgs%lx
BFILE closure#>#0#ITPUB个人空间3z s ~]mz0W"d(?
ITPUB个人空间Yx)_ oh5z,g
等待关闭外部bfile文件 ITPUB个人空间^`&GmG%S{
ITPUB个人空间5W r7a&nN
BFILE get length#>#0# ITPUB个人空间5J'UF;h;cn

O"rh%sGR B9390331获得外部bfile文件的大小 ITPUB个人空间1dx9^Q&Y p

I#J:Sk D,[ p9390331 BFILE get name object#>#0#ITPUB个人空间;gU#C.h~
ITPUB个人空间/}],_~,E6~x
得到外部bfile文件的名字 ITPUB个人空间6]W,Fd6~:n f

{!T/BM:b(h+R9390331 BFILE get path object#>#0#   ITPUB个人空间1Jd\[u"xP c
ITPUB个人空间L$n.b"q T+gC
得到外部bfile文件的路径 ITPUB个人空间 K-} ?%~\^

]b1T9VE8Y'\9390331 BFILE internal seek#>#0#   ITPUB个人空间n HV4t/V-zOh"r
ITPUB个人空间s(f2S,P3K/o'Ow NB
BFILE open#>#0# ITPUB个人空间6u;f^`(g,I%b
等待外部bfile被打开 ITPUB个人空间O1BwD{ t8v0mL!b

YYY0N%j{ }d9390331 BFILE read#>#0#   ITPUB个人空间$AKI yeK [#TFD
ITPUB个人空间 Sz BnT Z;KB
等待外部bfile文件读取完毕
M6e*b|\1Z6S:B9390331
;J Eg#['VWJ9390331 buffer busy due to global cache#>#0#  
9v4v0tGP[ m.p,Z1s9390331 ITPUB个人空间6m.w/cEqP
buffer busy waits#>#0#
3jTd M7NHm)cSX9390331 ITPUB个人空间@ IW.d] okjv!Z
block正被读入缓冲区或者缓冲区正被其他session使用,出现此情况通常可能通过几种方式调整:增大data buffer,增加freelist,减小pctused,增加回滚段数目,增大initrans,考虑使用LMT ITPUB个人空间DoS6f/_qa/w#v'\ W
ITPUB个人空间"T'hc9D$C#| W
buffer deadlock#>#0#  
:{6`7oKEkJ9390331 ITPUB个人空间8jaF-?$u
由于系统缓慢所产生而非应用产生了死锁 ITPUB个人空间{m-V5F8MqSj^9R e
ITPUB个人空间6?2ER6N'L7PH9Ikk
buffer latch#>#0# ITPUB个人空间,`"rY]_([|N2F\
ITPUB个人空间bXF0y8A\A:^ Ryd \
会话等待'buffer hash chain latch' ITPUB个人空间E cRONL-n9R})~

.E1m Pm4M7L,AH9390331 buffer read retry#>#0#  
&NQV1m {\8hP9390331 ITPUB个人空间j}P+qO W(O
OPS下读buffer的过程中内容发生了变化于是重新读取 ITPUB个人空间l4sS;R^h#~;C+y9U m wd
ITPUB个人空间GQU2S%z
Cache simulator heap#>#0#  
'pA'hU[Gy9390331 ITPUB个人空间OR+J~we
checkpoint completed#>#0# ITPUB个人空间8pyo3Sy,sR
等待检查点的完成,通常出现这个问题的原因是IO问题严重,可调整跟检查点相关参数log_checkpoint_interval,log_checkpoint_timeout,db_block_max_dirty_target,fast_start_io_target 等,可间接的增大日志文件大小和增加日志文件组数 ITPUB个人空间c Yd$V*D o ?
ITPUB个人空间(^SU#l&C9f
Contacting SCN server or SCN lock master#>#0#  
tx5O]p5X[+Z L"\9390331 ITPUB个人空间sL9v2KD+uf#fc
control file parallel write#>#0#   ITPUB个人空间;II h V,p)Rz;w
ITPUB个人空间DKs,z+mLEB&^!J
等待写所有控制文件的完成,可将控制文件分散在不同的磁盘上 ITPUB个人空间jaQMS
ITPUB个人空间(Vf)s+[/z+@Mq'f
control file sequential read#>#0#  
ID\D ~%uR9390331
9w|OB HR9390331读控制文件,在 备份控制文件、OPS等情况下产生 ITPUB个人空间%Ay OP6kCvtU)B'U2ZO:w

$F0u2f8D_ d&fMx9390331 control file single write#>#0#  
;v{A~[L,Qz9390331
r_%T}yq#o9390331OPS下同一时刻只允许一个session将共享信息写入磁盘
1H,Uf ]'VZzm(~f@9390331
TASe;`S0e L!fv9390331 conversion file read#>#0#   ITPUB个人空间R4Eyd-BK

kL"C-~6@ZHy"d+U Z9390331 db file parallel read#>#0#  
\tc+q2[8A'tM9390331
khpaky9390331做恢复的并行从数据文件获取数据 ITPUB个人空间Gj|8|'Bg1d'gF(xi

6T9}hS^6WlS9390331 db file parallel write#>#0#  
X2? X[\&x7z:E;h?9390331
4[k#~A2g!S!]H PG9390331当多个IO可以同时发生时(多磁盘),DBWR可并行写入,DBWR等待最后一个IO的完成 ITPUB个人空间0Mt zG|;[8D$BO)p,z-t
ITPUB个人空间j4GD$H{2W
db file scattered read#>#0#   ITPUB个人空间*koR {7af&Y
ITPUB个人空间|J#nx1d,U.U(X\
一次获取的block被分散在buffer的不连续空间中,通常表示全表扫描过多,可检查应用程序是否合理的使用了索引,数据库是否合理的创建了索引
l!Tp,r G3Tn-L L7~#e9390331
?[4[%va"g;vb9390331 db file sequential read#>#0#   ITPUB个人空间E9QM2}r$R"A
ITPUB个人空间\3ZtD hW
通常暗示着通过索引获取数据量比较大(比如通过索引进行范围扫描获取表数据百分比过大),多表连接的时候连接顺序不当,hash join时hash_area_size无法容纳hash table
Cbl-hG9390331
,o7D)J$S3|#ZtCw&X#X9390331 db file single write#>#0#  
eDC&b'X n9390331
&G;lS,A6}9z9390331更新数据文件头出现等待
`3_/Meu9390331 ITPUB个人空间k CtTcN B g7^
debugger command#>#0#   ITPUB个人空间G5Jt2yOz1w
ITPUB个人空间nPP9}R0_ \!E
DFS db file lock#>#0#  
{N{f8F9390331
4`hL6\2VC8wF9390331OPS下每个实例在数据文件上有一个共享的全局锁,当要offline数据文件的时候等候其他实例同步文件 ITPUB个人空间-s| _)Qo+b-S
ITPUB个人空间)U*|2[jJ^:A0Z8|#US
DFS lock handle#>#0#
n)R cKg(k9390331
ITPUB个人空间#|%y2v'nOm,D
会话等待一个全局锁请求
Y-gVm,^2H#r$q9390331 ITPUB个人空间*SR~#Vh
direct path read#>#0# ITPUB个人空间6mV;n"DNaJ"Lx4J3o
ITPUB个人空间"|2Le/@t |sf0B
通常发生在临时表空间排序、并行查询中
7v8M-n8_J-Y}}^9390331 ITPUB个人空间&`(iD)Qp q5L
direct path read (lob) #>#0#
y!S/v!O _9NkV9390331
T q%xI,s$Br(|h9390331 direct path write#>#0#  
o{^G1caA9390331 ITPUB个人空间Jn2}6Z6c,u+z
direct方式导入数据(sqlldr,CTAS)、PDML、临时表空间排序 ITPUB个人空间6H } fT-\8_)G

$` E9H-UVA)f9390331 direct path write (lob)#>#0#  
o~)d YK8HY \@K]9390331 ITPUB个人空间8b hV\0n8\eN
dispatcher listen timer#>#0#   ITPUB个人空间/HO;C_\l7i
ITPUB个人空间m/X"O1hIL/g/T*^h
dispatcher shutdown#>#0#   ITPUB个人空间0WR*w:aPZi8^;IFU/O
ITPUB个人空间7B^dk e7FL
dispatcher timer#>#0#   ITPUB个人空间_3UV!q?2F"cm
ITPUB个人空间:X {C^d e A"p
DLM generic wait event#>#0#   ITPUB个人空间 D U#h:nfU%vDJ+]
ITPUB个人空间Yt!H)Bp!Yh
dupl. cluster key#>#0#   ITPUB个人空间)VId6pi\;NR

v4x;BF-mgX9390331 enqueue#>#0#
^&W#Z.^H["Lr9390331
ITPUB个人空间r%H?7VAB J&wMf
对共享资源的获取要求一种排队(FIFO)的机制以保护共享资源,
)}:H6i y] _ I_9390331ST enqueue表示空间分配或者释放导致的问题可采用LMT表空间来避免, ITPUB个人空间*M U;Zup"v
TX enqueue主要产生于唯一索引重复、bitmap index 的频繁更新、initrans太小或者pctfree过小
|KhC1Z0e9390331 ITPUB个人空间9^^?.B gH C7\ a
file identify#>#0#
\;^g!h U lW.]1^9390331
E%F6kwT,D&C9390331 file open#>#0#  
v(pd L(D;u&o,eP9390331 ITPUB个人空间fuJ(P(g#SqM PS
free buffer waits#>#0#  
u"D o8G'Q)r6H D` _*m4l9390331 ITPUB个人空间gh}9j I)c-te
在缓冲区中寻找可用buffer出现等待,可能数据缓冲区太小,也可能检查点间隔太长,也可能频繁的DML而IO成为瓶颈
W#Yj8C0w9390331
Z;o^*Y'i ~-J _VHQ9390331 free global transaction table entry#>#0#
peL]r;MI.O9390331
MFK1c?"~9390331分布式数据库中会话等待一个全局事务槽
T z,Yz/~9390331
/g RY_,d8m+h9390331 free process state object#>#0#   ITPUB个人空间'h;v9rJ(^.O0C5L)S

x#bCt/iC9390331 global cache bg acks#>#0#   ITPUB个人空间*qN/u ZX7R ?

l7[%QE1@*GD2Vg'~:u9390331 global cache cr request#>#0#  
c\v.P k-tw9390331
F3g2q!IK6p}w9390331 global cache freelist wait#>#0#  
/Q,cmFN6oS9390331 ITPUB个人空间'C&_)w pTjG1|e(y
global cache lock busy#>#0# ITPUB个人空间+Z.r&QH!H1uD$hC*K4m
ITPUB个人空间T9iM+wU1H.H1_ PD
会话等待将一个buffer从当前共享状态转换为当前独占状态
*[,Q}/bnu9390331 ITPUB个人空间3D"?#iJ#r
global cache lock cleanup#>#0#  
q:~@5]r9390331 ITPUB个人空间:iW \ w"U4`C{ G
global cache lock null to s#>#0#   ITPUB个人空间%lA"?jY.r,q

~l1P^8jSx D9S#um9390331
mY'i(\(P E9390331 global cache lock null to x#>#0#  
I7VAW x1b-\s4q9390331
r$~j*dXu9390331 global cache lock open s#>#0#   ITPUB个人空间 J/F{Jua8vu7e
ITPUB个人空间-H*S!w[2IY _*x
global cache lock open x#>#0#  
u,k5i;@Bc)W1t'R!q7l9390331
"g!rr,T F V C*YQ ?9390331 global cache lock s to x#>#0#   ITPUB个人空间 Hv'r9r?N%NE"lvV

T6X+P2@A4lg6dm9390331 global cache multiple locks#>#0# ITPUB个人空间 kQh gY

5u(x:yBs:ml9390331 global cache pending ast#>#0#  
^ xzEEKlh9390331 ITPUB个人空间@4z$ho9Hjz
global cache pending asts#>#0#  
6s}-~+O!~9Q-jzC.{9390331
\RZ*|)m(@G}#X9390331 global cache retry prepare#>#0# ITPUB个人空间\ u5a0E We(KcT
ITPUB个人空间avaS8JL4t.Po
global cache retry request#>#0#   ITPUB个人空间&P"hj]}2~:zY|c
ITPUB个人空间zaR&[y'h0q)l9f$K
imm op#>#0#  
c|Lv4j_9390331
M)s%]:h2Bc*W ~N5aa-V9390331 inactive session#>#0#   ITPUB个人空间'[!k2^m$J V

,t-{*[&KC j:D9390331 inactive transaction branch#>#0#   ITPUB个人空间 dZ$a7] S
ITPUB个人空间*QK,E Z%B5f8k1l
index block split#>#0#
)v pCO3z5@H X9390331
#X%iEy)W/~,ii1c9390331当在索引中查找一个key的时候如果发现该索引block正在裂变则等待裂变完成 ITPUB个人空间k_p-}u$} m9kE

)V%L|;c1_ ]9390331 io done#>#0#
!fL]I Jz$zF9390331 ITPUB个人空间,EA?g'R
会话等待IO的完成
1c+y(Hj^q2~9390331 ITPUB个人空间 g6M-P4q$~ F _R
KSIM GDS request cancel#>#0#   ITPUB个人空间5y(y1ab?!Z-e&Q
ITPUB个人空间} |j4h:s_}!}X
latch activity#>#0#   ITPUB个人空间@:?]kX:R1^PF
ITPUB个人空间j1h.}*[g)U$G Q
latch free#>#0#  
_q-_`/o#Z9390331
-~(cs{#w9390331latch是一种维护内存的锁,不采用排队机制,快速的获取然后很快释放,造成的原因通常有程序没有使用绑定变量、shared_pool_size设置过大(比如1G)、LRU竞争、某些块过热(访问太频繁) ITPUB个人空间 O:y2E y j(m"A&THX
ITPUB个人空间^qnd#Y
LGWR wait for redo copy#>#0#
'Q*i4ne)qRE?.R9390331
(k-x9L+GE%s Afw9390331表示等待redo allocation and redo copy latches,可增加 _log_simulteneous_copies(默认为 2*CPUs),但同时也容易引入redo allocation latch contention,所以需要慎重
1u:],j v&t%jqz9390331 ITPUB个人空间yJ w9?y y s0h
library cache load lock#>#0# ITPUB个人空间uP Xv$K2J;}6[7V(P

N.SOZ*d K:{H:_Z9390331 library cache lock#>#0#   ITPUB个人空间2Ecv` Z+p([R

Eig#XnI x9390331 library cache pin#>#0#  
]1fm jDPI9W9390331
b_x;d ^0f\?`9390331 listen endpoint status#>#0#  
Y,C c[3]9390331
f%g'G oc F:d(Y9390331 LMON wait for LMD to inherit communication channels#>#0# ITPUB个人空间e(u*K)V3k`
ITPUB个人空间A4luh*c?uD:XZ
local write wait#>#0#  
e#Etj ~em"_9390331 ITPUB个人空间 e)l+d%QAY7Tj
lock manager wait for dlmd to shutdown#>#0#   ITPUB个人空间GO.} t Axr

Q Y7?mY9390331 lock manager wait for remote message#>#0#   ITPUB个人空间9ayS5Y)lH

ai6t6s [}/Z ~9390331 log buffer space#>#0#ITPUB个人空间0Yx7Y w,SM4@E OA/e
ITPUB个人空间m[*qtx$[h,U(`
生成日志等待lgwr赶快写文件而腾出log buffer,可在init参数文件中增大 log_buffer,置日志文件于高速磁盘上
r&~,~O-rc#Ym5S2BD9390331
0bd!S*s l!I }rl`.^9390331 log file parallel write#>#0#   ITPUB个人空间3wo N*O"qZ-i+m
ITPUB个人空间+j"T-@ PVC6V T
当lgwr写日志文件的过程中出现等待,这个等待通常会导致 log file sync事件,放置日志文件于高速磁盘上
ra0b.sW[Y.d9390331
&L-] d j_,p:fg9390331 log file sequential read#>#0#  
"HC[ K/_9B [!d9390331 ITPUB个人空间&Cd4A~is\(gh
log file single write#>#0#   ITPUB个人空间VxQv} ZH!J

P&Wc7hLiy*F A9390331 log file switch (archiving needed)#>#0#
+y#Ix&Y0f9390331
ITPUB个人空间R8F]#T'}}$Q9L
当日志切换的时候由于日志组循环使用了一圈但日志归档还没有完成,通常是io有严重问题,可增大日志文件和增加日志组,调整log_archive_max_processes
1TN6cgm9390331 ITPUB个人空间;R!@D9O Ei[h
log file switch (checkpoint incomplete)#>#0#
1\ `/m U7d9390331
ITPUB个人空间2@?|?'h
当日志切换的时候由于日志组循环使用了一圈但将被使用的日志组中的checkpoint还没有完成造成,通常是io有严重问题,可增大日志文件和增加日志组
k p}vh*y&Sq8]E'@9390331
1l$f'?y/P6D8p)y]c v9390331 log file switch (clearing log file)#>#0#  
P?'Fak)R9390331
M,a V$vW*F F&qS/^9390331 log file switch completion#>#0#   ITPUB个人空间ZYg6S9O,bj
ITPUB个人空间2H$SU/m6h0s
write complete waits#>#0#
8EVr$Pi?G%O$v%[9390331

hE D-^8O gfB9390331用户等候buffer被写进文件,暗示着写数据文件等待 ITPUB个人空间/DwZm&J+AT5e

Dpkpf4T+j mq9390331 log file sync#>#0#
G$V/F1x?fb{5W%B5aA9390331

r-o_f)MSX9390331当用户commit的时候通知lgwr写日志但lwgr正忙,造成的可能原因是commit太频繁或者lgwr一次写日志时间太长(可能是因为一次log io size 太大),可调整 _log_io_size,结合log_buffer,使得(_log_io_size*db_block_size)*n = log_buffer,这样可避免和增大log_buffer引起冲突;置日志文件于高速磁盘上
4E C#@+j!gH9390331
;eD:D#[0z$h9390331 log file sync
Rb{msJ w;i9390331: 当某个因素导致需要写 redo 进 file的时候(通常是commit发生),发现 lgwr 正在写,而产生等待 造成的因素: 1: commit 太频繁(这个道理的解释可以说比如我们去食堂带饭,一次带一盒跟一次带2合),虽然2合可能多消耗一点力气,但这个来回的准备动作可以看做进程之间的通信、磁头的控制权的获取等等硬件因素,所以不是简单的1次写100k等于50k写2次,一次写100的代价会小于2次写50k,但问题在于如果有在刚开始写之后有其他commit发生,该commit可能在第一次50k写完之后就开始写入,这样只等待50k的时间而不用等待100k的写时间。这是很微小的发生在commit不频繁但是大事务经常存在的时候的现象。这个时候调整_log_io_size 或许能产生效果 2: 但若一次写的太多也可能导致该等待事件的出现3: 从IO本身的快慢来讲,更容易造成该事件,所以我们在IO方面来考虑更直接有效
$Z7hM#w1dn)mY$]9p9390331 ITPUB个人空间HBm]Y][#i

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9390331/viewspace-680312/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9390331/viewspace-680312/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值