Por que o cache de consulta do MySQL é desativado por padrão?

3

Eu tenho uma pergunta bem simples ...

Por que o cache de consulta do MySQL é desativado por padrão?

Na maioria das versões empacotadas do MySQL eu encontrei os valores padrão são:

query_cache_type = 1
query_cache_size = 0

Isso basicamente desabilita o cache de consultas por padrão.

Existem muitos outros buffers e limites que são definidos com um valor padrão sensato. Como o cache de consulta é completamente transparente para os aplicativos, por que ele foi desativado?

Eu me pego habilitando o cache de consulta e o log de consultas lentas automaticamente toda vez que eu implemento uma nova caixa do MySQL, portanto, apenas curioso quanto à lógica dos padrões.

    
por Coops 03.03.2011 / 13:15

1 resposta

4

Nem sempre é desabilitado por padrão (depende da versão e do distribuidor), mas há uma boa razão para isso: nem sempre é melhor para o desempenho habilitar o cache de consulta e, em tamanhos de cache maiores, pode ser prejudicial o desempenho como a limpeza do cache (empurrando dados menos usados para fora da memória para abrir caminho para novas entradas) leva mais tempo. Quando a invalidação e a remoção demoram mais tempo do que a consulta demora para ser executada, você tem sérios problemas.

Não é uma bala de prata para problemas de desempenho também. De aqui :

Query cache is great for certain applications, typically simple applications deployed on limited scale or applications dealing with small data sets.

A razão mais óbvia para a desativação do cache de consultas por padrão é o distribuidor que está defletindo as possíveis oscilações para padronizar uma configuração que pode causar problemas de desempenho dependentes do aplicativo.

Aqui está uma boa cartilha no Cache de consulta do MySQL

    
por 03.03.2011 / 13:38

Tags