查询分析显示“正在等待查询缓存锁定”但 query_cache_size 为 0

Joh*_*hue 8 mysql replication query-cache

我们有一个基于语句的复制服务器,它一直在减速,并且在事件期间SHOW FULL PROCESSLIST显示复制查询卡住了,"Waiting for query cache lock"这令人惊讶,因为服务器query_cache_size设置为0. 分析违规查询确实会在每次更新表时显示此步骤。

这是在配置文件中看到的典型更新,即使query_cache_size0?这真的只是检查查询缓存而不是等待获得真正锁的查询吗?

Rol*_*DBA 9

该消息意味着您正试图获取查询缓存互斥即使query_cache_size变量为0(注意,akuzminsky提到,甲骨文MySQL的仍然允许这个)你将需要设置query_cache_type的,以及因为MySQL的文件说,到0:

如果服务器在query_cache_type设置为 0 的情况下启动,则它根本不会获取查询缓存互斥锁,这意味着无法在运行时启用查询缓存,从而减少了查询执行的开销。

在 MySQL 5.6 中,query_cache_type默认为 0。这是1对MySQL 5.05.15.5

无论 MySQL 版本如何,请确保my.cnf具有这些

[mysqld]
query_cache_size = 0
query_cache_type = 0
Run Code Online (Sandbox Code Playgroud)

您不需要重新启动 mysql。只需登录到 mysql 并运行以下命令:

mysql> SET GLOBAL query_cache_size = 0;
mysql> SET GLOBAL query_cache_type = 0;
Run Code Online (Sandbox Code Playgroud)

试一试 !!!