MySQL中运行速度慢的查询
问题描述:
我最近遇到了一个查询,这个查询从过去几天开始非常耗时。我们上个月为MySQL数据库进行了服务器迁移,并且在以前的服务器上从未发生过这个问题。旧版服务器上的MySQL版本是5.1.34,目前版本是5.1.58(不知道这个问题是否与这个问题有关)。MySQL中运行速度慢的查询
查询是如下:
SELECT table_name,
partition_name,
subpartition_name,
partition_method,
subpartition_method,
partition_expression,
subpartition_expression,
partition_description,
partition_comment,
nodegroup,
tablespace_name
FROM information_schema.partitions
WHERE table_schema LIKE 'wialogdb'
AND NOT Isnull(partition_name)
AND table_name LIKE 'freemail'
ORDER BY table_name,
partition_name,
partition_ordinal_position,
subpartition_ordinal_position;
这是对的Navicat发射,以获取有关表结构的细节information_schema.PARTITIONS 查询,这是非常difucult重现。
当你编辑表的Navicat已收集abotu从信息架构 表中的所有细节(如发动机,表列的lsit,请参阅分析显示创建表等) 和分区是它具有表的一个检查你可以看到WHERE条件不是“正确的”WHERE TABLE_SCHEMA LIKE'wialogdb'它不应该是LIKE它应该是WHERE TABLE_SCHEMA ='wialogdb',这个查询要快得多,但它是Navicat的内部代码 我们可以不改变它。我们以前没有这个问题(旧的MySQL 5.1.34)
任何帮助将不胜感激。
在此先感谢。
我认为这是DBA StackExchange站点的一个问题,所以我已经将其标记为在那里移动,但是表的索引是?我会从看这个开始。如果我记得正确的话,当你迁移MySQL数据库时,你会失去索引,所以你可能已经从索引良好的数据库变成没有索引的数据库了。 – JMK 2013-05-03 11:43:55
需要多长时间? MySQL似乎没有对information_schema表进行索引,因此,即使查询日志实际上运行速度相当快,查询可能会停留在慢查询日志上 - 这取决于慢查询日志的设置(即,它是否仅记录查询超过1秒,或者还记录未索引的查询) – Kickstart 2013-05-03 12:39:35
也浏览我发现此页 - http://www.mysqlperformanceblog.com/2011/12/23/solving-information_schema-slowness/。它提到了一个设置,可以在检查信息模式时引起缓慢的查询。可能的值innodb_stats_on_metadata设置已在您的2个mysql安装之间更改。 – Kickstart 2013-05-03 12:45:56