Devo aumentar o cache do MySQL?

1

Eu tentei executar o tuningprimer.sh para ajustar minhas configurações do mysql. Eu já aumentei o cache de consultas do mysql algumas vezes para 2GB atuais, mas ainda não é suficiente de acordo com os resultados do teste:

> QUERY CACHE Query cache is enabled Current query_cache_size = 2.00 G
> Current query_cache_used = 1.72 G Current query_cache_limit = 8 M
> Current Query cache Memory fill ratio = 86.22 % Current
> query_cache_min_res_unit = 4 K However, 3906616 queries have been
> removed from the query cache due to lack of memory Perhaps you should
> raise query_cache_size MySQL won't cache query results that are larger
> than query_cache_limit in size

Como você pode ver, 3 mil consultas foram removidas do cache por causa de seu tamanho. Tenho medo de indexar um cache tão grande. Quer dizer, talvez a pesquisa em um arquivo de cache tão grande possa levar mais tempo e recursos do que executar a consulta em si.

O que você acha? Devo ainda aumentar o cache do mysql?

BTW: o servidor executa o Litespeed + mysql + php 5.3 e tem 24 GB de RAM, o uso de memória atual é de 12 GB

    
por chubbyk 17.10.2011 / 23:42

3 respostas

2

Se você tiver muitos conjuntos de resultados pequenos para armazenar em cache, sua query_cache_min_res_unit poderá ser muito grande. Como query_cache_min_res_unit é o tamanho mínimo de alocação para um conjunto de resultados em cache, mesmo com 2 GB de cache de consulta, você não poderá armazenar mais de 512.000 resultados. Dê uma olhada nas variáveis Qcache_total_blocks e Qcache_queries_in_cache da saída de SHOW STATUS LIKE '%qcache%'; - se você vir uma proporção próxima a 1: 1, poderá se beneficiar da redução do valor de query_cache_min_res_unit.

Os problemas de contenção de bloqueio ainda seriam um problema, mas você veria o limite atingido quando "SHOW PROCESSLIST" listar um número excessivo de procesos "Aguardando bloqueio de cache de consulta".

    
por 18.10.2011 / 11:37
1

Os documentos dizem:

"Be careful not to set the size of the cache too large. Due to the need for threads to lock the cache during updates, you may see lock contention issues with a very large cache."

Lembre-se que não define o que é muito grande ... Edit: Olhando para este bug Eu acho que você está no território de muito grande.

Se este for um serviço de busca, talvez você deva considerar algo como Solr ?

    
por 18.10.2011 / 00:14
1

Você pode querer ler isto: link antes de começar a usar um cache enorme. Eu tinha um banco de dados mysql de 850GB que armazenava principalmente dados demográficos e meu cache de consulta tinha 32M com base no meu plano de consulta.

Eu tinha começado com um cache grande e depois de alguns anos usando o mysql com muito ajuste de desempenho e limpando as consultas, eu deixei cair para o 32M e funcionou bem.

"MySql de alto desempenho" também tem um ótimo capítulo sobre o cache de consultas.

Refs:

link

    
por 18.10.2011 / 15:11

Tags