2017-04-09 54 views
0

我有一個CakePHP 3應用程序運行和MySQL服務器版本:5.6.32-78.1-log - Percona服務器(GPL),版本78.1,版本8bb53b6的MySQL和性能時查詢INFORMATION_SCHEMA.key_column_usage表格確實是最糟糕的。INFORMATION_SCHEMA.key_column_usage查詢需要28秒加載

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已關閉,請幫助夥計們。我會非常感激..

回答

0

這個聲明是由Cakephp生成的嗎?爲什麼?他們不能找到更好的方法嗎?

information_schema在版本8.0(及其數據字典)之前很難實施。

DBNAME中有多少個表?表格越多,需要的時間越長。

如果您第二次運行相同的查詢,它的運行速度有多快?

There 可能是一些導致此查詢速度特別慢的設置。你有多少RAM? SHOW VARIABLES;SHOW GLOBAL STATUS;的數值是多少?

+0

沒有太多的表,但我在Debugkit SQL日誌中看到,informationm_schema查詢需要30秒來加載並返回0行,這意味着如果我運行該查詢,它不會產生任何影響,因爲在所有頁面的行都是0.第二次當我運行查詢時,它被緩存並加載得很快,但是再過30秒後,需要時間,可能是由於元數據緩存和all.u所以我刪除了那個查詢和我的應用程序是快速的,因爲它應該是.. – user2555748