como desabilitar todos os tipos de caches no servidor mysql para fazer testes de desempenho para minhas consultas

1

Estou usando o Mysql Server 5.6.15 e tenho um banco de dados enorme com muitas consultas complexas.

parece que, quando executo a consulta, a primeira vez leva X quantidade de tempo.

quando eu o executo novamente, leva menos de X tempo. o que significa que algo foi armazenado em cache.

Eu quero ser capaz de testar o desempenho de minhas consultas, a fim de melhorá-las no cache.

existe uma maneira de desabilitar todos os tipos de cache no mysql para que eu teste corretamente o tempo de execução das minhas consultas?

qualquer informação sobre o assunto seria muito apreciada.

    
por ufk 18.03.2014 / 09:26

1 resposta

3

O que você está realmente procurando é ter erros de cache de consulta próximos a 100%. Eu acho que tenho o que procura. Em 09 de julho de 2011, atendi a esta postagem no DBA StackExchange: Testando a velocidade da consulta .

Aqui está a resposta:

You may want to impose a stress test environment to get query results to be as real time as possible. For example, the MyISAM Key Buffer (size governed by key_buffer_size) by default is 8MB, and the minimum value is 8 (that's right, 8 bytes). It is responsible for holding index pages from .MYI files. Set this value to 8 and every keyed lookup in MyISAM must be read over and over again.

This would also work in prinicple with InnoDB. The default InnoDB Buffer Pool Size (governed by innodb_buffer_pool_size) is 128MB and minimum is 1MB (in MySQL 5.5). It is responsible for holding data and index pages from .ibd and/or ibdata1 files. Set this value to 1M and every keyed lookup in InnoDB (which always includes an additional lookup in the clustered row index (gen_clust_index)) must be read over and over again.

For added stress, set the query_cache_type to 0 to force queries not to be cached.

Just add those three(3) minimum values into /etc/my.cnf

[mysqld]
innodb_buffer_pool_size=1M
key_buffer_size=8
query_cache_type=0

and restart MySQL.

Doing this should make all queries perform at its bare minimum best (or worst) every time.

Give it a Try !!!

Bem, não fique aí sentado olhando para o monitor ...

Experimente!

    
por 18.03.2014 / 14:39