Artigo no estilo: Curso

De que se trata o artigo?

Da configuração para Performance Tuning de um banco de dados em MySQL para otimizar o desempenho deste Banco de Dados. Este artigo é o segundo de uma séria sobre Performance Tuning em MySQL.


Para que serve?

Para configurar o MySQL corretamente para que ele utilize de forma otimizada o máximo de recursos possíveis do ambiente computacional onde está instalado.

Em que situação o tema é útil?

Em casos onde o poder de processamento são características fundamentais do ambiente.

No primeiro artigo desta série, vimos como diminuir o tempo de gravações no MySQL e começamos a verificar como poderíamos melhorar as leituras, aumentando o tamanho do cache do engine do InnoDB (Nota DevMan 1). Nesta segunda parte, iremos abordar principalmente os parâmetros que devem ser alterados para um melhor desempenho em leituras, além de explicar algumas complicações sobre alteração de parâmetros no MySQL.

Nota DevMan 1. InnoDB

InnoDB é um módulo ou estratégia de armazenamento para o MySQL. Atualmente ele é incluído como padrão em todos os binários distribuídos pela empresa MySQL AB. Sua principal melhoria diante da estratégia de armazenamento MyISAM é oferecer transações do tipo ACID.

Novamente, a ideia do artigo não é simplesmente dizer que parâmetros devem ser alterados, mas sim levar ao leitor, passo a passo, a uma evolução da configuração para obter-se um melhor desempenho.

Primeiramente iremos verificar, apenas para controle, o tempo de um SELECT, para um melhor isolamento dos gargalos envolvidos e tentar então melhorar este tempo. Este SELECT, demonstrado na Listagem 1, faz um JOIN entre duas das tabelas criadas no artigo anterior, a CLIENTE e a CLIENTE_02, sendo que esta última é uma cópia exata da primeira.

Listagem 1. Comandos SELECT para verificar o tempo de execução de um JOIN.


  1. ricardo@ricardo-laptop:~$ mysql -u root -pMinhaSenha
  2. Welcome to the MySQL monitor.  Commands end with ; or \g.
  3. Your MySQL connection id is 384
  4. Server version: 5.1.41-3ubuntu12.6 (Ubuntu)
  5. 
  6. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  7.
  8. mysql> USE test;
  9. Reading table information for completion of table and column names
  10. You can turn off this feature to get a quicker startup with -A
  11. 
  12. Database changed
  13. mysql> SELECT COUNT(A.id_cliente) FROM CLIENTES A, CLIENTES_02 B WHERE A.ID_CLIENTE = B.ID_CLIENTE;
  14. +---------------------+
  15. | COUNT(A.id_cliente) |
  16. +---------------------+
  17. |            18105728 |
  18. +---------------------+
  19. 1 row in set (1 min 26.11 sec)
  20. 
  21. mysql> SELECT COUNT(A.id_cliente) FROM CLIENTES A, CLIENTES_02 B WHERE A.ID_CLIENTE = B.ID_CLIENTE;
  22. +---------------------+
  23. | COUNT(A.id_cliente) |
  24. +---------------------+
  25. |            18105728 |
  26. +---------------------+
  27. 1 row in set (0.00 sec)
  28. 
  29. mysql> SELECT COUNT(A.id_cliente) FROM CLIENTES A, CLIENTES_02 B WHERE A.ID_CLIENTE = B.ID_CLIENTE;
  30. +---------------------+
  31. | COUNT(A.id_cliente) |
  32. +---------------------+
  33. |            18105728 |
  34. +---------------------+
  35. 1 row in set (0.00 sec)
  36.
  37. mysql> ... 

Quer ler esse conteúdo completo? Tenha acesso completo