Configuração da Cache de Consultas
A cache de consultas adiciona algumas variáveis do sistema MariaDB para mysqld os quais podem ser definidos em um arquivo de configuração, na linha de comando ao iniciar mysqld.
query_cache_limitNão armazene em cache resultados que são maiores que isto. (Padrão 1M).query_cache_min_res_unitEsta variável está presente a partir da versão 4.1.
O resultado de uma consulta (os dados que também são enviados ao cliente) é armazenado na cache de consulta durante o recuperação do resultado. Consequentemente o dado normalmente não é tratado em um grande bloco. A cache de de conaultas aloca blocos para armazenar o dado em demanda, assim quando um bloco é preenchido, um novo bloco é alocado. Como a operação de alocação de memória é caro, a cache de consulta aloca blocos com um tamanho mínimo de
query_cache_min_res_unit. Quando a consulta é executada, o último bloco do resultado é cortado para o tamanho atual do dado, assim a memória sem uso é liberada.- O valor padrão de
query_cache_min_res_unité 4 KB o qual deve ser adequada para a maioria dos casos. - Se você tiver várias consultas com resultados pequenos, o tamanho padrão do bloco pode levar a fragmentação de memória (indicado por um grande número de blocos livres (
Qcache_free_blocks), que podem fazer a cache de consultas deletar consultas da cache devido a perda de memória) (Qcache_lowmem_prunes)). Neste caso você deve diminuirquery_cache_min_res_unit. - Se você tem muitas consultas com resultados grandes (veja
Qcache_total_blockseQcache_queries_in_cache),você pode aumentar a performance aumentadnoquery_cache_min_res_unit. No entanto, seja cuidadoso para não torná-lo muito grande (veja o ponto anterior).
- O valor padrão de
query_cache_sizeA quantidade de memória (especificada em bytes) alocada para armazenar resultados de consultas antigas. Se ele for 0, a cache de consultas está desbilitada (padrão).query_cache_typePode ser atribuido (apenas numérico) comOpção Descrição 0 (OFF, não armazene ou retorne resultados) 1 (ON, armazene todos os resultados, exceto consultas SELECT SQL_NO_CACHE ...)2 (DEMAND, armazene apenas cconsultas SELECT SQL_CACHE ...)
Dentro de uma thread (conexão), o comportamento da cache de consulta pode ser alterado do padrão. A sintaxe é a seguinte:
QUERY_CACHE_TYPE = OFF | ON | DEMAND QUERY_CACHE_TYPE = 0 | 1 | 2