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_limit
Não armazene em cache resultados que são maiores que isto. (Padrão 1M).query_cache_min_res_unit
Esta 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_blocks
eQcache_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_size
A 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_type
Pode 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