检查点和redo日志的关系
每次切换日志时都会发生一次检查点。如果上一个检查点已在进行中,由日志切换引起的检查点将覆盖当前检查点。
此时就需要大小合适的 redo 日志,以避免因频繁的日志切换而引起不必要的检查点。另外, 增量检查点目标和日志尾之间的间隔也会受“最小在线日志文件大小的 90%”设置所限制。这样做的目的是可确保在大多数情况下,日志切换不必等待检查点。因此,日志文件大小应配置得够大才行(但不能太大,至于设置多大,下文有建议)。 日志文件过小会增加检查点活动并降低性能 。Oracle官方也建议用户将所有在线日志文件设置为同一大小,且每个线程至少拥有两个日志组。若要监视日志切换发生的速度,以及随后的检查点产生的速度,可以查看alert日志。
redo日志大小设置建议
先看一个alert日志中日志切换的例子后再予以说明:
Fri Aug 6 12:16:57 2021
Thread 1 advanced to log sequence 1661
Current log# 1 seq# 1661 mem# 0: /oracle/oradata/redo01.log
Thread 1 advanced to log sequence 1662
Current log# 2 seq# 1662 mem# 0: /oracle/oradata/redo02.log
Fri Aug 6 12:18:21 2021
Thread 1 advanced to log sequence 1663
Current log# 3 seq# 1663 mem# 0: /oracle/oradata/redo03.log
Thread 1 advanced to log sequence 1664
Current log# 1 seq# 1664 mem# 0: /oracle/oradata/redo01.log
Fri Aug 6 12:21:17 2021
Thread 1 advanced to log sequence 1665
Current log# 2 seq# 1665 mem# 0: /oracle/oradata/redo02.log
以上不难看出,redo日志每2-3分钟切换一次,日志切换过于频繁了,说明redo日志的大小太小了。日志如果 redo 日志每 3 分钟切换一次,就能感觉到数据库的性能降低了。这表明 redo 日志不够大,不能有效地处理该事务负载。因此可以得出结论: 过于频繁的检查点和日志文件切换问题会影响数据库性能!
那么如何设置合适的redo日志大小呢?
根据官方建议和本人工作经验,重做日志切换应该大约每 20-30 分钟左右产生一次最为合适。如果它们切换太频繁,可以通过 V$LOG 检查当前重做日志文件的大小,并根据平均切换频率,重新创建更大的重做日志组,然后用“ALTER SYSTEM SWITCH LOGFILE;” 切换redo日志几次,使得当前重做日志是刚创建较大的重做日志文件之一( 要确保之前小的redo日志是“INACTIVE”状态),最后使用“ALTER DATABASE DROP LOGFILE XXX ;”命令删除较小的重做日志组。
另外,将重做日志文件分布在多个物理磁盘上,也可以提高日志切换期间的性能。
补充说明:
如果等待日志文件切换完成,还需要添加一个或多个重做日志组来解决 Statspack 报告中的相关等待事件。
免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。
Copyright © 2009-2022 56dr.com. All Rights Reserved. 特网科技 特网云 版权所有 特网科技 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 百度云 中国互联网举报中心 增值电信业务经营许可证B2
建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站