INFORMATION_SCHEMA.key_column_usage查询需要28秒才能加载

时间:2017-04-09 09:01:56

标签: mysql cakephp schema innodb information-schema

我运行了Cakephp 3应用程序和mysql Server版本:5.6.32-78.1-log - Percona Server(GPL),版本78.1,修订版8bb53b6和查询INFORMATION_SCHEMA.key_column_usage表时的性能是真的很糟糕。

SELECT
    * 
FROM
    information_schema.key_column_usage AS kcu 
    INNER JOIN
        information_schema.referential_constraints AS rc 
        ON ( kcu.CONSTRAINT_NAME = rc.CONSTRAINT_NAME 
        AND kcu.CONSTRAINT_SCHEMA = rc.CONSTRAINT_SCHEMA ) 
WHERE
    kcu.TABLE_SCHEMA = 'DBNAME' 
    AND kcu.TABLE_NAME = 'TABLENAME' 
    AND rc.TABLE_NAME = 'TABLENAME'

平均需要28秒才能返回0行。

我几乎提到所有帖子但没有运气。由于mysql版本大于5.6,我检查innodb_stats_on_metadata是否关闭,请帮助大家。我非常感谢..

2 个答案:

答案 0 :(得分:0)

这条语句是否由Cakephp生成?为什么?他们不能找到更好的方法吗?

直到版本8.0(及其数据字典),

information_schema实施得很差。

DBNAME中有多少个表?表格越多,所需的时间就越长。

如果您再次运行相同的查询,它的运行速度有多快?

可能是导致此查询特别慢的一些设置。你有多少RAM? SHOW VARIABLES;SHOW GLOBAL STATUS;的价值是多少?

答案 1 :(得分:0)

我们在针对AWS无服务器Aurora / MySQL数据库的情况下使用Cake 3.7。因此,我们仅限于更新MySQL版本。在对应用程序进行负载测试时,我们在一定程度上遇到了数据库性能的对数扩展问题。这是由于堆积了这些查询。为了解决这个问题,我们只需在应用程序配置的“数据源”下将“ cacheMetadata” =>设置为真。