如何优化LOG FILE SYNC_log file sync 优化-程序员宅基地

技术标签: ORACLE  

 在一个提交十分频繁的系统中,我们经常会看到LOG FILE SYNC等待事件排在TOP EVENTS中。这种情况下,我们可能就需要针对LOG FILE SYNC等待事件进行优化了。

       首先我们会看一下这个等待事件平均的等待时长,正常情况下这个等待事件的平均等待时间不会超过10毫秒,如果等待时间太长,那说明LOG WRITER每次写入的时间过长,如果能够优化一下REDO LOG文件的存储,使之存放到更快的磁盘上,可以减少这个等待事件的单次等待时间。不过往往理论上的事情是最不靠靠谱的,系统管理员可能会和你说,目前的存储优化已经做的好到不能再好了,想要放到更快磁盘上的可能性几乎不存在。也许你很幸运,当前的REDO LOG是放在RAID 5上的,而存储上正好有个磁盘组是RAID 10的,而且可以划些空间给你,那样你可以通过提升REDO LOG写性能来缓解这个等待事件。

       如果正好不凑巧,我们无法通过优化REDO LOGIO性能来解决这个问题,或者优化了REDO LOGIO性能还是无法达到我们的预期,那么我们由该如何是好呢?有经验的DBA可能会建议你加大LOG BUFFER。提到加大LOG BUFFER可能有些朋友会感到疑惑了,REDO LOG文件写等待严重怎么会和LOG BUFFER直接关联起来呢?实际上这个问题解释起来一点也不难,如果我们发现数据文件的IO性能有问题,平均单块读的等待时间偏长,那么我们可以通过加大DB CACHE来减少总的IO次数,从而达到优化IO的效果。加大LOG BUFFER的原理也是一样的,可以使LOG BUFFER中存储更多的REDO LOG数据,从而减少由于REDO LOG BUFFER不足而导致的LGWR写操作的数量,使平均每次写入REDO LOG 文件的REDO 字节数增加,减少REDO IO的次数,从而达到优化LOG FILE SYNC等待的目的。

       如果前面两个招数都不灵了,那我们又该如何处理呢?那么我们就有下一招了,就是减少提交的次数,有些时候,提交过于频繁,我们如论如何去优化都无法彻底解决问题。通过加大一次提交记录的数量,减少提交批次的方法,可以很有效的减少LOG FILE SYNC等待。不过一旦需要这么解决问题,将是十分痛苦的事情了。因为这意味着应用需要做较大的调整,甚至要求应用架构作出调整才能完成,这种修改的代价就十分巨大了。

       优化LOG FILE SYNC还有一个方案,就是把部分经常提交的事务设置为异步提交。异步提交是10G以后的新特性,通过设置COMMIT_WRITE参数,可以控制异步提交。COMMIT_WRITE的缺省值是IMMEDIATE,WAIT,我们可以设置为IMMEDIATE,NOWAIT来实现异步提交。这个参数可以系统级设置也可以会话级设置。

       如果觉得设置COMMIT_WRITE参数太麻烦,也可以直接使用COMMIT WRITE命令。比如COMMIT WRITE IMMEDIATE NOWAITCOMMIT WRITE的语法如下:

      COMMIT WRITE [IMMEDAITE|BATCH] [WAIT|NOWAIT]

       其中IMMEDIATE的意思是提交时LGWR马上开始REDO LOG写操作,而BATCH的意思是提交后LGWR不需要马上开始写REDO LOG,可以按照其原有的计划启动写操作。BATCH可以让REDO LOG写操作更加迟后,一般我们还是希望尽快写入REDO LOG数据,因此IMMEDIATE NOWAIT是较为常用的优化方案。

        不过使用异步提交带来一个问题,从REDO LOG的基本原理来看,一旦提交成功的数据,客户端就可以认为其已经被正常存入数据库了,这些数据就不会丢失了,哪怕实例故障。而采用异步提交技术的数据,哪怕已经提交成功,数据还是有可能丢失。因此一旦数据库实例故障,采用异步提交的系统需要做一些额外的校验和处理。清理不一致的数据,重新插入刚才由于异步提交而丢失的数据。这就需要我们的应用对当前最后一笔提交的数据进行特殊的处理。建立校验机制和错误数据处理机制。这就需要我们在应用层面做一些特殊的设置。特别重要的,无法后续重新完全补充的数据就不适合使用这个方法了。

        老白曾经参加过一个项目投标工作,客户在进行压力测试,而测试的存储系统性能不佳,REDO LOG放在RAID 5上,一旦系统负载增加到800TPSLOG FILE SYNC的等待就十分严重。LOG FILE SYNC成为系统的一个主要瓶颈。由于仅仅是压力测试,实际生产系统不可能达到800TPS,而且实际生产系统的存储系统要远好于本次测试的测试平台。而由于目前这个问题的存在,客户的很多测试项目无法完成,为了完成本次测试,老白就建议客户使用异步提交。采用异步提交后,系统并发处理能力明显提高,最终完成了1200tps的测试工作。

        最后,老白要说的是LOG FILE SYNC这个等待事件十分关键的。我们日常做数据库维护的时候,应该对此指标建立基线,一旦这个指标有异常变化,一定要尽快进行分析并解决问题。一旦这个指标恶化,可能导致系统性能急剧下降,甚至导致短暂的HANG住。去年老白的一个客户的系统LOG FILE SYNC的指标平时是23毫秒,突然有一次做巡检的时候发现该指标增长到7毫秒了,当时老白在巡检报告中建议客户关注这个指标,并尽快检查存储系统和操作系统,查出变慢的原因。客户检查了一下存储,没有发现故障,于是就不了了之了。下个月巡检的时候,老白发现该指标增长到13毫秒了,再次预警,又没发现问题。随后两个月这个指标一直持续恶化,增长到了20多毫秒。由于前面几个月的检查工作没有发现问题,而从目前系统来看还是很正常的,所以客户也没有再去认真核查。终于有一天,系统突然HANG住了,5分钟后才恢复正常。后来检查原因,就是LOG FILE SYNC等待导致的。根据老白的建议,客户从头到尾检查了一遍��最终发现LVM的一条链路存在闪断的现象,修复了链路后,系统一切都恢复正常了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liangliangsmd/article/details/38122133

智能推荐

Node 安装_$>./configure --prefix=/users/user/.nvm/versions/n-程序员宅基地

文章浏览阅读210次。Node 安装-------------------------我使用的是nvm安装node:1 安装nvm: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash2 安装node: nvm install 10.16.33. nvm alias default ..._$>./configure --prefix=/users/user/.nvm/versions/node/v12.13.0 < ./configure

cmake 的link_libraries和target_link_libraries-程序员宅基地

文章浏览阅读2.9w次,点赞8次,收藏43次。我用的cmake 版本是3.12 ,link_libraries似乎并没有用,找了半天两种的区别并没有找到,只在官方文档中看到 link_libraries已经被废弃了Deprecated. Use the target_link_libraries() command instead.附一个有效的cmakelist.txt的例子cmake_minimum_required(VERS..._link_libraries

make: *** No rule to make target “install”.。Stop_make: *** no rule to make target 'install'. stop.-程序员宅基地

文章浏览阅读4.5w次,点赞5次,收藏7次。在centos7上安装redis时,在运行命令make PREFIX=/usr/localinstall时出现的解决办法1. 把我上述截图的执行命令的目录local改到我已经解压好的redis文件夹下[admin@localhost local]$ cd /home/admin/redis-6.0.12.重新在redis的目录下执行make PREFIX=/usr/local/ install命令[admin@localhost redis-6.0.1]$ sudo make ._make: *** no rule to make target 'install'. stop.

计算机功能简介:EC, NVMe, SCSI/ISCSI与块存储接口 RBD,NUMA_rbd iscsi-程序员宅基地

文章浏览阅读532次,点赞4次,收藏5次。特别是在工业应用领域,有许多老旧的功能设备速度太慢,利用EC延长计算机上电到开机的时间,给这些功能设备留出足够的等待时间,可以确保这些功能设备有足够的时间进行必要的初始化,确保该设备运转正常。包含:EC8032、INTC、WUC KB扫描、GPIO、ECPM、SMB、PS/2、DAC、ADC、PWM、ETWD、EC2I、GCTRL、BRAM、EGPC、DBGR、CEC、SMFI/SWUC/KBC/PMC 的EC部分和EC2I的EC部分。包含:CIR、BRAM、SSPI、PECI、UART1和UART2等。_rbd iscsi

IDW Spatial Analyst(ESRI.ArcGIS.SpatialAnalystTools)ArcEngine中反距离加权插值方法_c# arcengine 反距离权重插值-程序员宅基地

文章浏览阅读4k次。IDW(反距离加权插值方法)public void GPIDW(AxMapControl mapControl, ILayer layer, IEnvelope e, string pField, bool ISUPPER, string tucengname, double rasterPixel, double dInterval, ISpatialReference spatialR_c# arcengine 反距离权重插值

QT基础练习-程序员宅基地

文章浏览阅读798次,点赞18次,收藏29次。槽函数。

随便推点

Activity生命周期,2024Android面试总结-程序员宅基地

文章浏览阅读914次,点赞38次,收藏7次。给大家送上我成功跳槽复习中所整理的资料,由于文章篇幅有限,所以只是把题目列出来了,我自己手头上整理的资料均和上面的答案可免费分享,需要这些资料和答案的朋友,可以点击这里免费领取。**[外链图片转存中…(img-QzPwaw34-1711468890669)][外链图片转存中…(img-UuiXLymZ-1711468890670)]

Anaconda安装教程傻瓜教程_anaconda下没有usr目录-程序员宅基地

文章浏览阅读4.7w次,点赞119次,收藏717次。网上好多教程找的我心好累,为了方便新手安装,我这边整理了大致详细的教程,参考了好几个大佬的教程,废话不多说,直接开始~**前言:**有人纠结先安装python还是安装anaconda,这边的建议是装anaconda,就不需要单独装python了。其次,有小伙伴的Anaconda的安装分两种情况:情况一:电脑现在没有装python或者现在装的可以卸载掉(装Anaconda时先卸python);情况二:电脑目前装了python,但想保留它;_anaconda下没有usr目录

防止多次触发click事件_@click="unbind-程序员宅基地

文章浏览阅读1.2k次。一、问题描述 用户频繁触发同一表单的提交按钮可能会导致流程或程序紊乱二、需求 满足问题需求,在不妨碍用户使用的情况下禁止程序多次被触发三、实现逻辑 完成触发后解绑点击/相关事件四、实现代码1、知识点补充unbind()方法 (1) 官方说明:unbind() 方法移除被选元素的事件处理程序。该方法能够移除所有的或被选的事件处理程序,或者当事件发生时终止指定函数的运行。 (2)简单理解:解绑,与绑定相对2、代码<%..._@click="unbind

谷歌账号风控:个人开发者账号的问题分析与应对策略_issue found: high risk behavior googlr-程序员宅基地

文章浏览阅读699次,点赞10次,收藏7次。去年9-10月,众多开发者目睹了谷歌大规模封禁个人账号的举动,并不断更新了风控政策。这是因为随着个人开发者账号滥用行为的增加,谷歌不得不采取更为强硬的措施来保护其平台的良好环境。那目前谷歌账号风控措施_issue found: high risk behavior googlr

面试官:localhost 和 127.0.0.1 的区别是什么?问倒一大片。。。-程序员宅基地

文章浏览阅读20次。戳下方名片,关注并星标!回复“1024”获取2TB学习资源!????体系化学习:运维工程师打怪升级进阶之路 4.0— 特色专栏—MySQL/PostgreSQL/MongoDBElasticSearch/Hadoop/RedisKubernetes/Docker/DevOpsKafka/RabbitMQ/Zookeeper监控平台/应用与服务/集群管理N...

CVPR 2022 | Glow模型助力黑盒对抗攻击-程序员宅基地

文章浏览阅读514次。近日,清华大学,香港中文大学(深圳)等单位联合发表了一篇在对抗机器学习领域中黑盒攻击场景下的论文,已顺利被CVPR 2022接收。通过迁移一部分替代模型的条件对抗分布(CAD)的参数,同时根据对目标模型的查询学习剩下未迁移的参数,所提出的方法可以在任何新的正常样本上调整目标模型的 CAD以提高攻击性能。论文标题: Boosting Black-Box Attack with Partially T..._流模型 黑盒攻击