MariaDB 查询缓存未与准备好的语句一起使用

MariaDB 查询缓存未与准备好的语句一起使用

我们发现 MariaDB 设置中存在问题,其中作为准备好的语句执行的查询没有被缓存,但是通过 mysql 命令(即文本协议)在本地执行的查询确实被缓存了。

我读过了MySQL 查询缓存已启用但未被使用但它并没有真正的帮助。

我读过一些 2007 年及更早的过时博客文章,其中提到由于尚未实现,所以根本不会缓存准备好的语句。但是,MariaDB 和 MySQL 的文档都提到它应该可以工作。

这是我的配置:

MariaDB [(none)]> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

MariaDB [(none)]> SHOW STATUS LIKE 'Qcache%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 1         |
| Qcache_free_memory      | 268417416 |
| Qcache_hits             | 0         |
| Qcache_inserts          | 6         |
| Qcache_lowmem_prunes    | 0         |
| Qcache_not_cached       | 3797      |
| Qcache_queries_in_cache | 0         |
| Qcache_total_blocks     | 1         |
+-------------------------+-----------+

MariaDB [(none)]> SHOW VARIABLES LIKE 'query_cache%';
+------------------------------+-----------+
| Variable_name                | Value     |
+------------------------------+-----------+
| query_cache_limit            | 262144    |
| query_cache_min_res_unit     | 4096      |
| query_cache_size             | 268435456 |
| query_cache_strip_comments   | OFF       |
| query_cache_type             | ON        |
| query_cache_wlock_invalidate | OFF       |
+------------------------------+-----------+

此外,这是迄今为止执行的查询数,远高于 Qcache_not_cached。我认为,如果缓存使用率为 0,它们至少是相当的。

MariaDB [(none)]> SHOW STATUS LIKE '%queries%';
+-------------------------+---------+
| Variable_name           | Value   |
+-------------------------+---------+
| Empty_queries           | 0       |
| Qcache_queries_in_cache | 0       |
| Queries                 | 2306776 |
| Slow_queries            | 0       |
+-------------------------+---------+

我已经在 my.cnf 中的 [mysqld] 部分开始处打开了缓存,但这也没有太大帮助。

还有其他想法吗?

相关内容