2013-05-03 159 views
1

我最近遇到了一个查询,这个查询从过去几天开始非常耗时。我们上个月为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)

任何帮助将不胜感激。

在此先感谢。

+1

我认为这是DBA StackExchange站点的一个问题,所以我已经将其标记为在那里移动,但是表的索引是?我会从看这个开始。如果我记得正确的话,当你迁移MySQL数据库时,你会失去索引,所以你可能已经从索引良好的数据库变成没有索引的数据库了。 – JMK 2013-05-03 11:43:55

+0

需要多长时间? MySQL似乎没有对information_schema表进行索引,因此,即使查询日志实际上运行速度相当快,查询可能会停留在慢查询日志上 - 这取决于慢查询日志的设置(即,它是否仅记录查询超过1秒,或者还记录未索引的查询) – Kickstart 2013-05-03 12:39:35

+0

也浏览我发现此页 - http://www.mysqlperformanceblog.com/2011/12/23/solving-information_schema-slowness/。它提到了一个设置,可以在检查信息模式时引起缓慢的查询。可能的值innodb_stats_on_metadata设置已在您的2个mysql安装之间更改。 – Kickstart 2013-05-03 12:45:56

回答

3

如果不是您的软件,请不要尝试修复它。让创作者知道你有性能问题,并且你找到了可以提高性能的东西。

为什么人们购买软件许可证是有原因的:使用支持。

+0

我们无法回到软件支持的原因是,同一个查询在迁移之前用得很好,所以他们会说这与迁移有关,而不是软件的内部代码。 – dave005 2013-05-05 07:26:29

+0

@ dave005你总是可以问你应该采取哪些步骤进行迁移,也许他们能够帮助你。 – Stefan 2013-05-05 18:52:57