这是我在管理员职业生涯中遇到过的最令人费解的MySQL问题。拥有MySQL掌握能力的人能帮助我一点吗?:
现在,我运行一个应用程序,每秒查询我的MySQL / InnoDB表很多次。这些查询很简单并且经过优化 - 单行插入或带索引选择。
通常,查询速度超快,运行时间不超过10毫秒。但是,每隔一小时左右,所有查询都会变慢。例如,今天5:04:39,一堆简单的查询运行时间超过1-3秒,如我的慢查询日志所示。
为什么会出现这种情况,您认为解决方案是什么?
我有一些自己的想法:也许硬盘在那段时间很忙?我确实运行了一个云服务器(rackspace)但是我将flush_log_at_trx_commit设置为0并且有大量的缓冲存储器(磁盘上的表大小的10倍)。所以插入和选择应该从内存中完成吗?
有没有其他人经历过这样的事情?我在这个论坛和其他人的搜索过程中,看起来我以前没见过其他任何MySQL问题。
答案 0 :(得分:1)
突然失速的原因有很多。例如 - 即使您使用flush_log_at_trx_commit = 0,InnoDB也需要暂停,因为它会扩展数据文件的大小。
我对Rackspace上较小实例类型的体验是IO非常糟糕。我已经看到随机写入(应该花费10毫秒)需要500毫秒。
内置MySQL中没有任何内容可以帮助您更轻松地识别问题。您可能想要做的是查看Percona Server的慢查询日志增强功能。有一个名为“profiling_server”的特定功能可以分解时间: http://www.percona.com/docs/wiki/percona-server:features:slow_extended#changes_to_the_log_format