mysql突然忽略了一段时间的表索引
在我们的mysql 5.1服务器上有一个名为的innodb表,它是web应用程序的中心。由于一个糟糕的实现,它有大约150000行和太多的列 最近,我们一直在运行一项任务,该任务每隔几秒钟频繁更新一次表(插入或更新) 当该任务运行时,数据库将定期(每1-3小时)变得更慢,以处理客户端读取请求。在这些时间里,slow_log将此表作为罪魁祸首,对它的任何请求看起来都像是在进行完整的表扫描。最终,在5-20分钟内,它将自行恢复正常处理 我的假设是,不断的表更新每隔一段时间就会使mysql的查询优化器统计数据出错。我不知道如何证明这一点或找到解决办法 以下是原因吗mysql突然忽略了一段时间的表索引,mysql,database,Mysql,Database,在我们的mysql 5.1服务器上有一个名为的innodb表,它是web应用程序的中心。由于一个糟糕的实现,它有大约150000行和太多的列 最近,我们一直在运行一项任务,该任务每隔几秒钟频繁更新一次表(插入或更新) 当该任务运行时,数据库将定期(每1-3小时)变得更慢,以处理客户端读取请求。在这些时间里,slow_log将此表作为罪魁祸首,对它的任何请求看起来都像是在进行完整的表扫描。最终,在5-20分钟内,它将自行恢复正常处理 我的假设是,不断的表更新每隔一段时间就会使mysql的查询优化器
我们可以在这里说同样的话,但我会优先考虑数据库设计和优化查询。对于更新,
说明了什么?但是,query\u缓存
很可能就是这里的恶棍。如果UPDATE
很大,则需要清除将其重新添加到缓存中的命令,这通常会花费时间。不幸的是,EXPLAIN仅适用于mysql 5.1的SELECT语句。有一些插入出现在慢速日志中,但这些插入发生在所有选择都很慢的时候,因此可能更多的是一种症状而不是原因。这可能是我们能得到的最接近的答案。好的方面是,你有明确的行动来解决这个问题。这很有帮助,给了我一些方向。我不完全相信索引/插入的数量是造成这种间歇性问题的唯一原因。更新表格的任务整天都在运行,我们每1-3小时就会看到一个问题。如果插入开销是问题所在,那么这不应该是一个更稳定的问题吗?作为参考,任务运行时CPU的使用率通常约为15%,然后在出现问题时稳定为100%。