Certamente, o segredo mais cobiçado por DBA’s, DA’s, Desenvolvedores, e, pelo público em geral que está direta ou indiretamente envolvido com banco de dados, sobretudo, o MySQL/MariaDB é: como aumentar a performance do banco de dados. Este é, sem dúvida alguma, o Santo Graal do mundo moderno que cada vez mais entulha pilhas de informações dentro de seus bancos de dados. 

Estatísticas de um respeitado instituto Europeu chegou a seguinte conclusão: “mais de 40% das informações registradas em banco de dados jamais serão utilizadas para qualquer finalidade”. E, pelos meus longos cabelos brancos, posso dizer que é a mais pura verdade. Ótimo, uma parte do segredo já foi desvendada: Parem de guardar entulhos! Alguém disse um dia que para que voce possa receber é preciso se desfazer daquilo que não usa!

Como um verdadeiro Mr. M do banco de dados, vou agora, dar-lhes os segredos da Performance Tuning!

Acesse o cliente/console do MySQL/MariaDB e aplique o seguinte comando:

mysql> SET GLOBAL MYSQL_SPEED = ‘FAST’;

De fábrica, esta variável vem configurada como ‘SLOW’. Os valores que você pode configurar são: ‘RIDICULOUS’, ‘SLOW’, ‘ANNOYING’, ‘MEDIUM’, ‘FAST’ e ‘GO-SAKILA-GO’. Simples, certo?

Claro que não. Não existe mágica. Tenho lido BLOG’s e mais BLOG’s com configurações paranóicas que ultrapassam a barreira do ridículo. Truco! É 12 ladrão! Cada banco de dados tem vida própria, comportamento próprio, carga e uso distintos, e, rodam em hardware diferentes. Por que haveria uma configuração a “la Matrix” que resolveria tudo em um passe de mágica?

Não se consegue a performance ideal, simplesmente, alterando “valorzinhos” de variáveis, existe um conjunto de fatores que devem ser considerados. É o famoso espreme-daqui-espreme-dali e no resultado final, consegue-se algo substancial. Alguns destes fatores saltam aos olhos, já outros precisam ser analisados detidamente para entendermos o porquê de sua contribuição para uma operação de alta performance.

Os fatores a serem analisados são os seguintes:

a) Hardware: ao escrever os requisitos para aquisição de um novo hardware, seja realista. Deixe o seu cliente (interno/externo) saber que banco de dados é apaixonado por memória e discos rápidos. Uma alternativa à aquisição é o aluguel de servidores nos EUA.

b) Sistema operacional e sistema de arquivos de arquivos: Eu sei, eu sei… você esta mais familiarizado com o lado negro da força (apesar das telas azuis) , mas, o Linux não mata não. Para o servidor de banco de dados prefira utilizar sistemas operacionais Unix like. Além de vários sabores, você vai encontrar um grande número de file systems diferentes, tais como: EXT3, EXT4, OCFS, ZFS, NTFS, HFS, entre outros. Ah! Para os fãs de Freddy Krueger e Jason, temos o excelente ReiserFS.

c) Configuração do mysqld (servidor): A famosa “setagem” de variáveis. Este é um tópico que irei comentar em outro artigo. Basicamente, precisamos entender: recursos disponíveis (hardware), carga do banco, se o banco é OLTP ou OLAP, entre outros fatores. Temos um conjunto de variáveis que precisam ser, adequadamente, ajustadas com a “cara da sua operação”.

d) Modelagem do banco: É meu caro, nem tudo na vida é CREATE TABLE qualquer coisa. Modelar seu banco de forma adequada, aplicando-se a Normalização (NF) ou Desnormalização, conforme cada ENTIDADE/tabela é fundamental para um banco performático. Além disso usar os data types mais adequados e racionais. Criar índices funcionais levando-se em conta seu uso, distribuição e seletividade.

e) SQL: Escrever queries racionais e lógicas que sempre utilizem índice (ou na grande maioria dos casos). Faça muito uso do EXPLAIN para entender como o MySQL está montando o plano de execução (QEP).

f) Manutenção Preventiva: Criar um plano de manutenção preventiva que possa eliminar as linhas apagadas definitivamente, e, ordenando os índices e atualizando suas estatísticas.

g) Monitoramento: Monitore sempre o tempo de execução das queires, através do log de queries lentas (SLOW LOG) para que voce possa aperfeiçoar queries e índices. O banco de dados tem vida própria. A quantidade de linhas muda, mudando a distribuição e seletividade dos índices, logo, uma query eficiente hoje, pode não ser amanhã.

Em linhas gerais, estes são os pontos com os quais um DBA deve se preocupar. Infelizmente, não existe mágica nem truque. O que existe sim é um trabalho continuo e muito sangue, suor e lágrimas.