即使query_cache_size = 0,mariadb的CPU使用率也将达到100%

33qvvth1  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(142)

我已使用以下配置配置了mariadb:

query_cache_size = 0
query_cache_type = 0

但是mariadb还是在CPU 100%的情况下挂起了。我检查了processlist,我得到了mysql cli中20多个进程的'Waiting for query cache lock "'。所有的进程都等待了超过几千秒。我现在已经看到了很多次了。(为了补充这一点,我们是一个共享主机提供商,有很多用户同时访问数据库)。
我还注意到总是有一个过程

Query   | 6301 | closing tables               | DROP DATABASE `vafagimone5854_V2JewLtWqhsB7inA1cO3`

这是线索吗?
另外,当我运行SHOW VARIABLES LIKE 'have_query_cache';时:

+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

以及SHOW VARIABLES LIKE 'query_cache_size';

+------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| query_cache_size | 16777216 |
+------------------+----------+

这是超级奇怪的,因为我禁用了缓存。最终,我杀死了mariadbd并重新启动了服务器进程,这显然不是理想的。
但令我惊讶的是,现在变数都没事了:

SHOW VARIABLES LIKE 'query_cache_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| query_cache_size | 0     |
+------------------+-------+

但是,这仍显示缓存已启用

SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

我非常困惑,有没有可能有人在运行时是query_cache_size?为什么have_query_cache总是“是”。

bbuxkriu

bbuxkriu1#

have_query_cache是编译时启用的,不能更改。另请参阅query cache kb page
看起来你把配置文件改成了query_cache_size=0,但是直到你重新启动它才生效。现在它重新启动了,希望性能会更好。
删除数据库时长时间“关闭表”是很奇怪的,除非表的数量非常大,并且表缓存不足(这值得检查)。

相关问题