2011-02-12 49 views
1

这是我在管理员职业生涯中遇到的最令人困惑的MySQL问题。 MySQL mastery有谁能帮我一下吗?:一个令人费解的MySQL问题:查询速度很慢

现在,我运行一个应用程序,每秒钟查询我的MySQL/InnoDB表。这些查询非常简单并且经过优化 - 无论是单行插入还是使用索引进行选择。

通常,查询速度非常快,在10 ms以下运行。但是,每隔一小时左右,所有查询都会减慢。例如,今天5点04分39秒,一系列简单查询全部运行超过1-3秒,如我的慢查询日志所示。

为什么会出现这种情况,您认为解决方案是什么?

我有我自己的一些想法:也许硬盘在那段时间很忙?我运行云服务器(rackspace)但我有flush_log_at_trx_commit设置为0和大量的缓冲区内存(磁盘表大小的10倍)。所以插入和选择应该从内存中完成吗?

有没有其他人遇到过这样的事情?我搜遍了这个论坛和其他人,而且看起来好像没有其他的MySQL问题。

+2

您应该在http://serverfault.com/上提问。你在同一个盒子上有其他网站吗?任何cron作业正在运行?你有足够的物理内存来防止交换? – 2011-02-12 03:40:34

回答

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