Мы наблюдаем проблему с нашей настройкой 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 |
+-------------------------+---------+
Я включил кеш в начале раздела [mysqld] в my.cnf, что тоже не сильно помогло.
Есть другие идеи?