我运行了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
是否关闭,请帮助大家。我非常感谢..
答案 0 :(得分:0)
这条语句是否由Cakephp生成?为什么?他们不能找到更好的方法吗?
直到版本8.0(及其数据字典), information_schema
实施得很差。
DBNAME
中有多少个表?表格越多,所需的时间就越长。
如果您再次运行相同的查询,它的运行速度有多快?
可能是导致此查询特别慢的一些设置。你有多少RAM? SHOW VARIABLES;
和SHOW GLOBAL STATUS;
的价值是多少?
答案 1 :(得分:0)
我们在针对AWS无服务器Aurora / MySQL数据库的情况下使用Cake 3.7。因此,我们仅限于更新MySQL版本。在对应用程序进行负载测试时,我们在一定程度上遇到了数据库性能的对数扩展问题。这是由于堆积了这些查询。为了解决这个问题,我们只需在应用程序配置的“数据源”下将“ cacheMetadata” =>设置为真。