Article image
Alessandro Gonçalves
Alessandro Gonçalves02/07/2022 09:43
Compartilhe

Dicas de performance em bancos de dados para iniciantes

  • #Banco de dados relacional

Trabalho com bancos de dados há mais de 30 anos e observo que para os iniciantes pode haver muitas dúvidas das escolhas para melhorar o desempenho de bancos de dados relacionais (SQL server, Mysql, PostgreSQL, Oracle...).

Aqui irei comentar algumas dicas genéricas (i.e. se aplicam a diversos SGBD) para incrementar a performance com ideias simples e assertivas. Veja se fazem sentido na sua aplicação e teste:

1) Campos (colunas) com tipos pequenos - escolha um tipo de dados que se adequa bem àquilo que irá armazenar. Se um tipo integer comporta bem o dado, por que defini-lo como bigint ? Pense em escalabilidade (crescimento) e escolha o menor tipo possível.

2) Tipos numéricos preferencialmente - os tipos numéricos (byte, integer...) são geralmente mais rápidos que tipo texto (char,varchar...). Caso possa utilizá-los, use.

3) Troque char por varchar sempre que possível - o tipo char é de tamanho fixo enquanto varchar utiliza tamanho variável. Assim, um char(50) sempre vai usar 50 bytes enquanto varchar(50) utilizará exatamente o tamanho do dado a ser armazenado. Por exemplo, "Fulano" vai ocupar 50 bytes no tipo char e apenas 6 bytes no tipo varchar(50).

4) Índices - toda chave primária de uma tabela deve possuir índice e é meio óbvio. Aqui falo de índices em campos não chave que são muito usados na aplicação. Ex: caso a aplicação tenha consulta por nome, é boa prática colocar também um índice nesse campo. Observe quais consultas estão demorando mais e o que elas tem nas condições (o famoso where). Um cuidado a se tomar é que índices ocupam espaço e devem ser criados somente se houver uma real necessidade. Um campo que é utilizado raramente em consultas talvez não necessite de um índice específico.

5) Consultas ou atualização por bloco - ao contrário do que o senso comum pode pensar, um update que atualiza 1000 registros de uma vez é mais eficiente que do que fazer um loop com 1 update, 1000 vezes na aplicação. O tempo gasto na segunda alternativa pode ser até 10x maior.

Por último, alguns SGBDs vão deixando "espaços não usados" perdidos quando há muitas atualizações (isso visa garantir a otimização) e devem de tempos em tempos ser "ajustados", preferencialmente fora do horário de uso mais intenso da aplicação. No caso do PostgreSQL, configure o Autovacuum ou mesmo um Vacuum full para executar semanalmente ou mesmo diariamente, dependendo do uso da aplicação.

Sei que é um artigo pequeno mas teria me ajudado muito quando comecei lá pelos anos 90. Espero que gostem.

Abaixo meu contato do Linkedin caso queiram se conectar:

https://linkedin.com/in/alessandromirandagoncalves/

Compartilhe
Comentários (4)
Alessandro Gonçalves
Alessandro Gonçalves - 02/07/2022 19:49

Agradeço aos elogios. Reconhecimento é sempre bom.

Vou escrever de vez em quando alguns artigos que julgo interessante (mania de professor) :D


Sobre cursos de SQL, Denise, os da Dio são bem interessantes para começar. Caso queira outras dicas de cursos, conecte-se comigo no Linkedin (última linha do artigo)

WA

Willace Arandas - 02/07/2022 17:52

Ótima dica, vlw!

Maristela Tuna
Maristela Tuna - 02/07/2022 14:13

Olá Alessandro. Adorei a sua proposta de um artigo curto e prático. A dica do update foi show. Sempre gostei de olhar para o BD. Acho que diz muito para um programador. Sempre que possível, publique + dicas.

Denise Rinaldi
Denise Rinaldi - 02/07/2022 12:21

Oi Alessandro, bom dia, tudo bem ? gostei muito do seu conteúdo mencionado acima , estou começando na área de dados ,gostaria de saber se vc saberia me dizer algum curso para me indicar , lembrando que estou apenas começando rs , tenho interesse em analise de dados , manipulação ,banco de dados me identifiquei muito

OBRIGADA !!