Banco de DadosOlá, o post de hoje é voltado especialmente para aqueles que querem dar uma "turbinada" no seu SGBD (Sistema de Gerenciamento de Banco de Dados).

Antes de entrar a fundo no tema em si, já gostaria de preparar o leitor avisando que não existe uma solução mágica para qualquer tipo SGBD e aplicação (ahhhh!), mas fique feliz porque aqui vou te ajudar a entender um pouco mais sobre o assunto e também dar umas dicas para melhorar a performance do seu banco. Então vamos lá!

Primeiro de tudo, se a sua aplicação estiver lenta não saia colocando a culpa no banco, às vezes a culpa nem é dele e sim da aplicação. Como eu já disse não existe uma fórmula secreta, mas alguns ajustes aqui e ali podem fazer com que a sua aplicação responda bem mais rápido, o importante é ter paciência e aprender a ser curioso e testar as alternativas.

 

1) Princípio de Pareto. Estão lembrados?? Ele diz que 20% das entradas são responsáveis por 80% dos resultados. Podemos fazer uma analogia trazendo esse princípio para os SGBD's, onde cerca de 20% do seu banco será acessado 80% das vezes. Concentre-se em identificar e otimizar esses 20%.

2) Keep it simple. Procure trazer somente as informações necessárias do SGBD, pois a quantidade de colunas e seu tamanho influenciam na resposta. Ou seja, cuidado com o SELECT * FROM…

3) Faça do Índice o seu aliado. Não cometa o erro de criar índices como um louco em suas tabelas achando que elas irão te responder mais rápido. O Índice é uma estrutura secundária e ordenada que tem por finalidade referenciar a tabela em si, essa estrutura pode ser uma árvore, hash, etc. Por isso, quando fazemos uma busca e utilizamos a coluna indexada na cláusula WHERE ela é bem mais rápida. Porém, manter essa estrutura possui um custo, o que faz com que a inserção numa tabela que contém índices se torne mais custosa.

Outra dica em relação aos índices é verificar o tipo da coluna que está sendo indexado. Em geral, os índices são bem eficientes para campos de valores numéricos. Entretanto, para campos alfanuméricos, o índice tem a sua performance condicionado ao tamanho do campo. Por exemplo: um índice criado sobre uma coluna VARCHAR(30) será "mais rápido" que o criado sobre uma coluna VARCHAR(255). A dica aqui é ficar atento e, se possível, reduzir o tamanho das colunas para a quantidade necessária de caracteres.

4) Cheque seu hardware. Por mais que suas consultas estejam otimizadas, o hardware faz diferença. Os SGBD's estão o tempo todo acessando, fazendo operações de leitura e escrita no seu disco rígido, por isso verifique os tipos de discos existentes no mercado e compare-os para fazer a melhor escolha dentro do seu orçamento.

5)  Mantenha a segurança. Segurança dos dados é coisa séria! Tome cuidado para não permitir acessos desenfreados para qualquer usuário a qualquer tabela do seu banco. Tenha como regra geral que não se deve jamais abrir mão da segurança em troca de aumento na performance, e conceda somente as permissões que forem necessárias para os devidos usuários. Se preferir, faça uso da criação Views que te ajudem a fornecer acesso somente aos dados necessários.

Bem, existiriam ainda alguns outros pontos importantes a serem abordados, como uma boa modelagem, a divisão de tabelas grandes em menores de acordo com seus acessos, como aproveitar o cache do banco, etc. Essa discussão ainda pode render um bocado! 🙂

Procurei escrever dicas dos pontos que considero como os principais num SGBD. Eu creio que, seguindo essas dicas e atentando para esses pontos, você consegue melhorar significativamente a performance do seu SGBD. Mãos a obra!