Estamos vendo um problema em nossa configuração do MariaDB, onde nossas consultas executadas como instruções preparadas não estão sendo armazenadas em cache, no entanto, consultas executadas localmente através do comando mysql (ou seja, protocolo de texto) são armazenadas em cache.
Li O cache de consulta do MySQL está ativado, mas não está usado mas não ajudou muito.
Li em algum post desatualizado do blog de 2007 e versões anteriores, que as instruções preparadas não são armazenadas em cache, devido a não serem implementadas. No entanto, a documentação do MariaDB e do MySQL mencionam que isso deve funcionar.
Aqui está minha configuração:
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 |
+------------------------------+-----------+
Além disso, esse é o número de consultas executadas até aqui, que é muito maior que Qcache_not_cached. Eu diria que eles seriam pelo menos comparáveis, dado um uso de 0 cache.
MariaDB [(none)]> SHOW STATUS LIKE '%queries%';
+-------------------------+---------+
| Variable_name | Value |
+-------------------------+---------+
| Empty_queries | 0 |
| Qcache_queries_in_cache | 0 |
| Queries | 2306776 |
| Slow_queries | 0 |
+-------------------------+---------+
Eu liguei o cache no início da seção [mysqld] em my.cnf, o que também não ajudou muito.
Alguma outra ideia?