Configure o cache de consulta mysql para nunca expirar

1

Eu pesquisei todas as interwebs mas não encontrei nenhuma documentação sobre isso. Como faço para definir meu cache de consulta para nunca expirar?

    
por laurenceputra 14.07.2011 / 03:43

2 respostas

1

A resposta, até onde eu sei, é que você não pode influenciar este aspecto do cache de consulta do MySQL. O MySQL gerencia o próprio cache de consultas e, na maior parte, funciona bem.

Mas se você puder, não deve fazer nenhuma diferença perceptível. Ao habilitar o cache de consultas, você terá que analisar e executar uma consulta idêntica comum em 100% do tempo, para ter que fazer isso apenas digamos 0,01% do tempo.

Você não ganhará muito estendendo o tempo limite, porque isso não fará nenhuma diferença para os 99,99% de solicitações idênticas que já são bem atendidas pelo cache, e as únicas que podem fazer a diferença é o 0,01% das solicitações em que o cache expirou.

    
por 14.07.2011 / 09:09
0

Não tenho conhecimento de qualquer expiração de tempo no cache de consulta do mysql. Tanto quanto eu sei, a expiração é feita somente quando:

1) A tabela é alterada (o mysql não verifica se isso pode afetar sua consulta - cada inserção / atualização nessa tabela faz com que todas as consultas nessa tabela expirem)

2) O cache de consulta está cheio e as consultas antigas e raramente usadas estão expiradas

Suponho que você tenha atingido um desses cenários. Você notificou qualquer período de tempo específico quanto tempo a consulta permanece em cache? Você pode configurar uma tarefa cron que execute a consulta periodicamente, o que preencherá previamente o cache. Enquanto esta consulta de longa duração estiver em execução, as consultas da Web ainda usarão os dados armazenados em cache. Quando estiver concluído, ele substituirá os dados no cache.

O problema com sua carga alta é porque, quando os dados armazenados em cache expiram, muitos clientes executam a consulta sem cache ao mesmo tempo. Usar o cron para preencher previamente o cache garantirá que apenas uma instância da consulta pesada esteja acontecendo ao mesmo tempo. Outra abordagem é fazer o cache no aplicativo da Web e permitir que apenas uma instância recarregue os dados reais, enquanto outros ainda usarão os dados em cache durante esse tempo ...

    
por 04.01.2012 / 16:53

Tags