MySQL在切换binlog时会阻塞更新
浏览:3110次 出处信息
版本
最开始在数据库慢查询里面发现偶尔的插入变慢怎么想也不明白,后来发现每次变慢的时间点和创建一个新的binlog的时间一致,然后经过测试,复现了此问题。
目前没发现为什么会引起此问题,如果要解决的话可以考虑设置max_binlog_size=600M,如果系统对插入速度或者超时没有苛刻的要求的话也可以不理会这个问题:)
最近还发现它不光阻塞更新,如果设置了replication那么它对从库的查询也有影响。
在binlog切换时,会有一个Rotate_log_event产生,而slave同步到此event后也会让Relay-log切换。由于mysql写这种日志都是写入系统缓存后就不管了,导致切换文件时需要对旧文件进行fdatasync,这时候瞬间io压力会过大,耗时较长。这种情况会阻塞更新的线程,让replication延迟,影响查询....
如果想解决此问题,可以调节系统/proc/sys/vm/下面 dirty_background_ratio、dirty_expire_centisecs、dirty_ratio、dirty_writeback_centisecs这几个值,或者设置sync_binlog和max_relay_log_size。
建议继续学习:
- 关于IO的同步,异步,阻塞,非阻塞 (阅读:14660)
- 利用binlog来恢复数据库 (阅读:4185)
- 说说使用mysqlbinlog按时间查询二进制日志时容易疏忽的地方 (阅读:3040)
- Linux下访问文件的基本模式 (阅读:3294)
- 总结一下遇到过的网络同步IO导致服务阻塞的问题 (阅读:2858)
- 用insert delayed减少阻塞时间 (阅读:2917)
- mysql audit-访问日志记录 (阅读:2472)
- Linux 核心编程 – fsync, write (阅读:2655)
- 使用内置定时事件的功能来定时删除 binlog (阅读:2067)
- 为什么binlog大小会大于max_binlog_size? (阅读:1920)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:改变了对Mysql子查询的看法
文章信息
- 作者:星月浪子 来源: 那一剑的风情
- 标签: binlog 阻塞
- 发布时间:2009-10-28 22:47:20
建议继续学习
近3天十大热文
-
[84] memory prefetch浅析
-
[52] 基本排序算法的PHP实现
-
[49] 深入浅出cassandra 4 数据一致性问
-
[39] 转载:cassandra读写性能原理分析
-
[38] javascript插入样式
-
[37] JS中如何判断字符串类型的数字
-
[37] MySQL半同步存在的问题
-
[34] Inline Form Labels
-
[34] 字符引用和空白字符
-
[32] 获取Dom元素的X/Y坐标