我注意到mysql(5.0.60)经常在负载下冻结最多几分钟,在此期间服务器完全没有响应。当innotop将主线程状态显示为“制作检查点”时,我已经能够将其分离出来。
此时服务器实际在做什么?
答案 0 :(得分:1)
这个问题可以解答您的问题并为您的问题提供一些解决方案:
您可能知道Innodb存储引擎使用模糊检查点技术作为其恢复策略的一部分。这是非常好的方法,这意味着数据库永远不需要“停止”执行完整的修改页面刷新,而是在小块中逐渐刷新脏页面,因此数据库负载非常均匀。
http://www.mysqlperformanceblog.com/2006/05/10/innodb-fuzzy-checkpointing-woes/
答案 1 :(得分:1)
检查点是数据库服务器将所有内存中更改提交到磁盘的时间。
答案 2 :(得分:1)
我以为我会扩展普拉迪普的评论:
InnoDB(默认)模糊检查点可以很容易地将脏页面刷新到磁盘*。当接近日志文件的末尾并强制检查点时,这可能会产生问题。
这是一个众所周知的InnoDB问题 - 并且有第三方补丁可以提供帮助。在XtraDB中,innodb_adaptive_checkpoint加快页面刷新,随着结束越来越近:
http://www.percona.com/docs/wiki/percona-xtradb:patch:innodb_io
InnoBase在1.0.4插件中发布了一个类似的补丁(尚未在官方的MySQL版本中发布)。