视窗
loading...
您现在的位置:首页 > IT认证 > oracle认证 >

Oracle性能调优:oraclelogbuffer内部机制以及常见等待事件


Oracle性能调优:oraclelogbuffer内部机制以及常见等待事件

重做产生于PGA,再由各个session的服务器进程将重做记录拷贝到SGA 的log buffer中,再由LGWR进程刷新到redo log文件中
    
    涉及到的三个latch:
    Redo copy latch
    Redo allocation latch
    Redo writing latch
    
    Redo copy latch
    redo copy latch的数量可以有多个,可以通过_log_simultaneous_copies参数来设定,缺省值是两倍CPU的个数,
    此latch保护日志缓存中的信息,主要用于从PGA拷贝重做到log buffer中,但是不允许对重做记录一边进行修改,
    一边将重做记录写入磁盘。所以LGWR工作的时候,必须等待持有redo copy latch 的前台进程将要刷新的重做记录拷贝完毕
    这里也就是说,LGWR从redo log buffer写到文件的时候,是无法写正在copy的redo log buffer,但是可以写不持有
    Redo copy latch的log buffer。
    
    Redo allocation latch
    前台进程和LGWR都将持有该latch
    oracle把向log buffer中写缓存这样一个操作分做两个步骤:
    1. 是先在log buffer中分配一块空间
    2. 是向这块空间中实际的写入重做信息
    当前台进行分配空间的时候,必须先持有该latch,但是该阶段该latch只有一个,所以前台进程这个时候会相互阻塞。
    当LGWR进行刷新缓存时,持有该latch,当确定刷新的范围后,那么就会写到磁盘,写磁盘前会释放该latch
    
    Redo writing latch
    当日志缓存没空间分配时,前台进程必须通知LGWR刷新日志缓存,只有第一个得到此latch的进程通知LGWR,
    用来阻止其他进程通知LGWR,通知后,马上释放该latch,不会一直占用。LGWR得到通知,持有该latch,
    写入磁盘文件前释放该latch。
    
    重做产生的流程:
    1.先在PGA中生成重做记录,并计算出重做记录大小
    2.由服务器进程申请redo copy latch如果成功的话继续
    3.再去申请redo allocation,成功分配空间后
    4.释放redo allocation
    5.开始把PGA中的重做记录写往log buffer
    6.记录写完后,释放redo copy latch
    
    _log_io_size:如果使用的log buffer大小等于或者大于该值,那么就触发LGWR写磁盘,缺省大小为log buffer的1/3,上限值为1M
    
    redo buffer等待事件:
    LOG BUFFER SPACE:
    redo copy的速度快于LGWR,造成free log buffer总是不够用
    原因:
    LOG BUFFER太小,总没有空间copy
    LOG BUFFER太大,但是录入的太频繁
    提高LGWR写的效率,以及磁盘的IO性能
    
    log file parallel write
    此等待事件是LGWR将log buffer写到在线日志文件,重用log buffer。
    解决方法:
    减少日志的生成(NOLOGGING)
    减少日志组成员数
    避免在备份模式下做大量的事务
    尽量用最小的辅助日志模式(Supplemental Logging),如在LOGMINER下分析日志.
    日志组成员分布在不同的物理磁盘上
    不要将在线日志存放在RAID5上
    尽量使用裸设备
    
    Log file sync
    事物提交时,一个进程创建一个重做记录,LGWR从log buffer写到磁盘,当再次发出commit,前面的LGWR还没有完成,会造成log file sync等待
    
    原因:
    过度频繁的提交
    CPU使用过度
    bug
    如果log file sync接近log file parallel write,那么冲突可能是日志IO问题,如果远大于,则IO不是主要问题
    
    Log file switch(checkpoint incomplete)
    当日志切换的时候,要覆盖一个检查点未完成的的日志造成的等待
    解决办法:
    IO有严重问题,增加DBWR的效率,提高磁盘IO性能
    增大日志文件
    增加日志组
    Log file switch (archiving needed)
    如果是归档模式存在此等待,那就是归档的速度慢,可以调整归档日志所在磁盘的性能,调整log_archive_max_processes。
    
    log file sequential read
    当redo进行归档时,会顺序读取redo日志,会造成此等待

闂侀潧妫岄崑锟�

闂侀潧妫岄崑锟�

闂侀潧妫欓崝鏇㈠储閵堝洦瀚婚柨婵嗘嫅缁憋綁鏌¢崟顐︻€楅柟铚傚嵆閹囧醇閻斿摜绉柣鐘叉搐閻°劌危閹达箑违闁跨噦鎷�
闂佸搫鐗滈崜娑㈡偟椤栫偞鐒鹃柕濞垮劚閻庤菐閸ワ絽澧插ù鐓庢嚇瀵爼濡烽敂鍓у煃婵炲瓨绮岀花鑲╄姳娴煎瓨鍤傞柡鍐ㄥ€荤粔褰掓煥濞戣櫕瀚�闁诲海鏁搁、濠偯归崱妯诲闁伙絽鏈悾鍗炃庨崶锝呭⒉濞寸厧鎳橀獮瀣箣濠婂嫮鎷ㄩ梺鍛婃⒐缁嬫帡鎯囨导鏉戝唨闁搞儯鍔嶉~鏍庨崶锝呭⒉濞寸厧鎳橀幆鍐礋椤愩垺鐦旀繝銏f硾鐎氬摜妲愰敓锟�闂佺懓鐡ㄩ崹鍐测堪閹寸姳鐒婂┑鐘叉搐濞呫垹霉閿濆棛鐭庨柍褜鍓欓幊鎰枔閹达附鍋嬮柛顐ゅ枑缂嶁偓闂佹垝鐒﹂妵鐐电礊閺冨牆绾ч柛鎰硶缁€锟�闁诲簼绲婚~澶愬垂濠婂嫮顩锋い鎺戝暞缁侇噣寮堕悙鍨珪婵炲牊鍨剁粚閬嶅焺閸愌呯婵犵鈧啿鈧懓锕㈡担鍓插殨闁稿本绻嶉崬鎾煙鐎涙ḿ澧繝鈧担鍦懝闁割煈鍋呯紞鈧梺鐟扮摠閻楃偟鎹㈠顑芥灃闁哄洦鐭换鍡涙煙椤撗冪仴妞ゆ洦鍓熷畷锝嗙節閸愨晩妲梺鑹伴哺濮婂鏌堥幘顔肩闁瑰瓨绮嶇划锕傛煥濞戞ɑ婀版繝鈧幍顔惧崥婵炲棗娴风粣妤冪磼閺傛鍎忕€规挸妫濆畷姘舵偐缂佹ḿ褰戦梺鎸庡喕閹凤拷闁诲海鏁搁幊鎾舵暜椤愶箑绀嗘繛鎴灻弫鍫曟倵绾拋娼愰柛銊︾矋缁傛帡顢楁担绋啃梺瑙勬緲缁绘垿寮鐣岊浄婵せ鍋撻柍褜鍓欓崐鍝ョ礊鐎n喗鍎嶉柛鏇ㄥ帎瑜版帗鐓€妞ゆ帒锕︾粈锟�闂佽壈椴稿濠氭焾閹绢喖妫橀柣鐔稿绾偓闂佹寧绋掑畝鎼佸磻閺嶃劎顩烽柨鐕傛嫹:webmaster@jscj.com闂侀潧妫岄崑鎾绘煟椤厾绁烽柣锔跨矙閺佸秹鏁撻敓锟�4008816886

相关文章

无相关信息
更新时间2022-03-13 11:18:59【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) |  濠电儑缍€椤曆勬叏閻愮鍋撻獮鍨仾婵犫偓閸パ屽殫妞ゆ棁顔婄换锟�

付款方式留言簿投诉中心网站纠错二维码手机版

客服电话: