Planejamento de capacidade de disco e RAM
Planejar a capacidade de disco e memória para um servidor de banco de dados é uma arte negra. Mais é melhor. Mais rápido é melhor.
Como diretrizes gerais, ofereço o seguinte:
- Você deseja mais espaço em disco do que NUNCA precisará.
Faça a sua melhor estimativa de quanto espaço em disco você precisará nos próximos 3 a 5 anos e, em seguida, duplique-o.
- Você precisará de RAM suficiente para manter os índices do banco de dados na memória, manipular sua maior consulta pelo menos duas vezes e ainda ter espaço suficiente para um cache de disco do sistema operacional saudável.
O tamanho do índice depende do seu banco de dados, e todo o resto depende muito do seu conjunto de dados e da estrutura de consulta / banco de dados. Oferecerei "Pelo menos duas vezes o tamanho da sua maior tabela" como sugestão, mas observe que essa sugestão se divide em operações realmente grandes de data warehousing em que a maior tabela pode ter dezenas ou centenas de gigabytes.
Todo fornecedor de banco de dados tem algumas instruções sobre o desempenho do ajuste do kernel do disco / memória / SO - passe algum tempo com esta documentação antes da implantação. Isso vai ajudar.
Benchmarking de carga de trabalho e planejamento de capacidade
Supondo que você não tenha implantado ainda ...
Muitos sistemas de banco de dados são fornecidos com as ferramentas de benchmarking - por exemplo, o
PostgreSQL é fornecido com o
pgBench .
Essas ferramentas devem ser sua primeira parada no desempenho do banco de dados de benchmarking. Se possível, você deve executá-los em todos os novos servidores de banco de dados para ter uma idéia de "quanto trabalho" o servidor de banco de dados pode fazer.
Armado agora com um benchmark bruto, ABSOLUTELY MEANINGLESS
vamos considerar uma abordagem mais realista para o benchmarking: carregue seu esquema de banco de dados e escreva um programa que o preencha com dados fictícios, depois execute as consultas do seu aplicativo nesses dados.
Isso avalia três coisas importantes: 1. O servidor de banco de dados (hardware) 2. O servidor de banco de dados (software) 3. Seu design de banco de dados e como ele interage com (1) e (2) acima.
Observe que isso requer muito mais esforço do que simples benchmarks pré-criados, como pgBench
: Você precisa escrever algum código para preencher, e pode precisar escrever um código para fazer as consultas e o tempo de execução do relatório.
Esse tipo de teste também é substancialmente mais preciso: como você está trabalhando com seu esquema e consultas, pode ver como eles serão executados e oferece a oportunidade de criar um perfil e melhorar seu banco de dados / consultas.
Os resultados desses benchmarks são uma visão idealizada do seu banco de dados. Para estar seguro, assuma que você alcançará apenas 50-70% desse desempenho em seu ambiente de produção (o restante é uma almofada que permitirá lidar com crescimento inesperado, falhas de hardware, alterações na carga de trabalho etc.).
É tarde demais! Está em produção!
Uma vez que seus sistemas estão em produção, é realmente muito tarde para fazer "benchmark" - você pode ativar o registro / tempo das consultas brevemente e ver quanto tempo as coisas demoram para executar, além de executar algumas consultas de "teste de estresse" em grandes conjuntos de dados durante o desligamento. horas. Você também pode examinar a utilização da CPU, RAM e E / S (largura de banda do disco) do sistema para ter uma idéia de quão pesado ele é carregado.
Infelizmente, tudo isso fará com que você tenha uma idéia do que o sistema está fazendo e um conceito vago de quão próximo da saturação está.
Isso nos leva a ...
Monitoramento contínuo
Todos os parâmetros de referência do mundo não o ajudarão se seu sistema estiver vendo de repente novos / diferentes padrões de uso.
Para implantações melhores ou piores do banco de dados, não é estático: seus desenvolvedores mudarão as coisas, seu conjunto de dados aumentará (eles nunca parecem encolher) e seus usuários de alguma forma criarão combinações insanas de eventos que você nunca previu em testes.
Para fazer um planejamento adequado da capacidade do seu banco de dados, você precisará implementar algum tipo de monitoramento de desempenho para alertá-lo quando o desempenho do banco de dados não estiver mais atendendo às suas expectativas. Nesse ponto, você pode considerar ações corretivas (novo hardware, esquema de banco de dados ou alterações de consulta para otimizar o uso de recursos, etc.).
Nota: Este é um guia genérico e de nível muito alto para dimensionar o hardware do banco de dados e descobrir quanto abuso pode ser necessário. Se você ainda não tiver certeza sobre como determinar se um sistema específico atende às suas necessidades, fale com um especialista em banco de dados.
Há também um site do Stack Exchange especificamente dedicado ao gerenciamento de banco de dados: dba.stackexchange.com . Pesquise o arquivo de perguntas ou navegue pelas tags específicas do mecanismo de banco de dados para obter mais conselhos sobre ajuste de desempenho.