/ / O mysql tem cache sobre o plano sql? - mysql

O mysql tem cache sobre o plano sql? - mysql

Se o mesmo sql rodar muitas vezes de diferentessessões, o mysql analisará o mesmo sql muitas vezes? No oracle / sql server, o plano para um sql é armazenado em cache e pode ser reutilizado. Uma vez que é dito que analisar e criar o plano de sql é caro, se o mysql não os armazena em cache, será um problema analisá-lo muitas vezes, o que pode custar muito caro?

Respostas:

1 para resposta № 1

Para o cache de plano de execução: Eu não acredito que o MySQL atualmente oferece esse recurso.

O MySQL tem um cache de consulta: http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

O cache de consulta armazena o texto de um comando SELECTdeclaração juntamente com o resultado correspondente que foi enviado para o cliente. Se uma instrução idêntica for recebida posteriormente, o servidor recuperará os resultados do cache de consulta em vez de analisar e executar a instrução novamente. O cache de consulta é compartilhado entre sessões, portanto, um conjunto de resultados gerado por um cliente pode ser enviado em resposta à mesma consulta emitida por outro cliente.

Não sei ao certo como esse artigo é atualizado (2006), mas ele fala sobre esses assuntos em detalhes: http://www.mysqlperformanceblog.com/2006/07/27/mysql-query-cache/
Tanto quanto sei, pouco mudou desde então a este respeito.


1 para resposta № 2

Este é um existente Pedido de Funcionalidade MySQL.

No entanto, os últimos comentários (em 2009), onde ao longo das linhas que não é claro, ofereceria melhorias significativas no desempenho e poderiam levar a condições de deadlock.


0 para resposta № 3

Se você está preocupado com isso, você pode querer olhar para o uso declarações preparadas.