A cache de consultas adiciona algumas variáveis do sistema
MySQL
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 diminuir
query_cache_min_res_unit
.
Se você tem muitas consultas com resultados grandes
(veja Qcache_total_blocks
e
Qcache_queries_in_cache
),você pode
aumentar a performance aumentadno
query_cache_min_res_unit
. No entanto,
seja cuidadoso para não torná-lo muito grande (veja o
ponto anterior).
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) com
Opçã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
Opção | Descrição |
0 or OFF | Não armazene ou recupere resultados |
1 or ON | Aramazene todos os resultados exceto consultas SELECT
SQL_NO_CACHE ... . |
2 or DEMAND | Armazene apenas consultas SELECT SQL_CACHE ... . |
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.