Para que o seu site possa aproveitar os recursos de escalabilidade na nuvem, é necessário adotar boas práticas de programação e manutenção do Banco de Dados.
1. Cuide do espaço em disco
O espaço em disco do banco de dados deve ser mantido o mais enxuto possível, preferencialmente, abaixo de 5GB. Isso aumenta a probabilidade dos dados serem acessados em memória RAM, o que melhora o desempenho da aplicação. O uso de bases menores também torna mais rápida a execução das rotinas de backup. Veja algumas dicas para reduzir o tamanho da base de dados:
- Elimine dados que não são mais necessários.
- Use segmentação, criando bases adicionais para guardar os dados menos acessados. Ou seja, mantenha na base principal somente as informações mais recentes (ex.: histórico de pedidos dos últimos 12 meses).
Já as informações que vão “esfriando”, mova para bases adicionais (ex.: histórico de pedidos de 2013-2014, e assim por diante). Na aplicação, a pesquisa do “histórico de pedidos” pode trazer os resultados mais recentes, seguidos de um link do tipo “Pesquisar pedidos anteriores ao ano…”. - Use particionamento (sharding). Esse método consiste em dividir os dados em várias bases usando determinados critérios (ex.: “Base A” com informações de usuários, “Base B” com informações de pedidos) e criar uma lógica de programação que decida para qual base direcionar as consultas. Quando se usa sharding, o método de conexão inicial dos scripts passa ser algo como InformaBancoDadosPara(ID_Usuario).
2. Otimize o desempenho
- Execute periodicamente rotinas de manutenção, seguindo as instruções de cada banco de dados.
- Optimize para MySQL/MariaDB
- Vacuum para PostgreSQL
- Reindex para PostgreSQL e SQL Server
- Crie e mantenha índices para as colunas mais utilizadas. Uma pesquisa em uma coluna não indexada exige mais processamento e leva bem mais tempo para exibir os resultados do que uma pesquisa indexada.
- Use o comando “explain” para analisar as consultas SQL realizadas no banco. Com este comando é possível descobrir se alguma coluna precisa ser indexada ou se uma tabela muito grande está causando a demora na apresentação do resultado da pesquisa.
- Use técnicas de “query caching” sempre que possível. Dados em memória são acessados mais rapidamente que dados no disco rígido.
- Não use queries do tipo “select * from” que têm um grande impacto no processamento do banco. Prefira “select coluna1, coluna2 […] from”.
- Restrinja o resultado das pesquisas com “where” e “limit”. Busque somente os dados realmente necessários.
3. Distribua a carga em múltiplos bancos
Ajuste a programação separando os métodos de escrita e leitura de dados nos scripts. Isso permite o uso de uma estrutura com replicação master/slave para distribuir a carga das consultas SQL. Nesse modelo, o servidor master pode receber escritas e leituras de dados, enquanto os slaves recebem somente leituras. Uma sugestão, por exemplo, é ter um servidor slave dedicado para geração de relatórios.
O uso dessas técnicas permite prevenir sobrecargas e resulta em um maior controle da aplicação.