Seu banco de dados está grande e lento? Você reinicia o serviço ele volta ao normal, mas após alguns minutos ou horas fica lento novamente? Veja essas dicas!
Você está com um projeto desenvolvido MySQL ou MariaDB, que use uma linguagem qualquer, talvez seja escrita em PHP/Laravel/MariaDB ou outra qualquer, mas o banco de dados está lento, cada vez maior e algumas tabelas já possuem milhares de registros.
Quando você inicio o servidor (ou reinicio), tudo funciona bem, mas poucas horas depois, qualquer solicitação ao MySQL fica extremamente lenta. Vejamos algumas dicas.
Memória RAM
Veja a quantidade de memória RAM livre; se está sendo consumida muito mais que o disponível então essa pode ser a causa. Terá que aumentar a quantidade de memória sendo usada pelo sistema operacional.
Você pode ter visto que tem memória disponível ainda. Mas uma dica interessante aqui é ver se a memória disponível não é a SWAP (memória em disco). Veja: O que é Memória Swap?
Swap é um espaço de disco(HD) no Linux que serve como uma espécie de memória. Swap é usado quando a quantidade de memória física(RAM) está cheia.
….
Embora o swap possa ajudar máquinas com uma pequena quantidade de RAM, ele não deve ser considerado um substituto para mais RAM. Swap está localizado nos discos rígidos, que são mais lentos do que uma memória RAM.
Se seu sistema está usando “swap” isso é extremamente prejudicial ao desempenho do MySQL. E geralmente a solução rápida é reduzir o buffer_pool.
No php.ini, em um sistema operacional com 4GB, por exemplo, 1500M é tudo o que pode ser feito com segurança em máquinas desse porte (4 GB).
innodb_buffer_pool_size = 1500M
Não defina um valor muito grande, desproporcional ao tamanho do MySQL; isso levará a problemas no sistema operacional.
Lembre-se de que buffer_pool é um “cache”. Alterar um pouco o tamanho tem apenas um impacto mínimo no desempenho do MySQL – a menos que seja muito pequeno.
Dê ao innodb_buffer_pool_size pelo menos 70 a 80% da memória física instalada.
Conexões simultâneas – max_connections
No php.ini, diminua também max_connections. Diminuir o número de “filhos” que o Apache criará poderá ser útil. Há poucos usuários? 30 pode ser bom; achou pouco? 100 geralmente é bom, mas talvez 50 seja um meio termo melhor. Isso tudo dependerá do seu ambiente.
innodb_log_file_size e innodb_sort_buffer_size
Verifique innodb_log_file_size e innodb_sort_buffer_size. Isso pode ajudá-lo e também limpar o log de consulta lenta, caso exceda.
Comment on “MySQL e MariaDB: Banco de Dado está Grande e Lento”