Há um acampamento em DBA-land (ou em algum momento, eu não passei por lá recentemente) que sustentava que o desempenho ótimo era encontrado ao microgerenciar a infraestrutura de armazenamento de tal forma que os sistemas e armazenamento É melhor que os administradores saiam do caminho e forneçam uma pilha de discos rígidos, um ou dois servidores e uma ajuda ocasional quando perguntados.
Esses sistemas geralmente acabam com um grande número de pares RAID1, com arquivos de dados proposital e sistematicamente espalhados por todos e cada um deles. Unidades de log seriam usadas e similarmente segregadas. As ideias por trás desse método são bem simples:
- Ao fazer isso dessa maneira, você segrega bancos de dados de outros grandes consumidores de IOP para que os grandes usuários nunca afetem o restante do sistema.
- Por ter muitas unidades, o IOPS agregado para o sistema é muito alto.
- Ao minimizar as camadas de abstração de armazenamento, você torna o sistema mais confiável e, em geral, tem menor latência.
Existe um problema significativo com esta abordagem, e Chopper3 acertou: manutenibilidade.
Um sistema como esse necessitará de atenção constante e contínua e de ajuste fino para continuar em ótimo desempenho à medida que os bancos de dados aumentam / diminuem, os usuários mudam, os aplicativos e seus padrões de uso evoluem, a recuperação das condições de fuga acontecem e os ciclos de manutenção mudam. O tipo de arquitetura que descrevi acima funciona melhor para tipos de carga de quase-nunca / ler-muitos.
Ele também é usado quando é realmente importante para o banco de dados extrair todo o último ponto percentual de desempenho do hardware. Esta é uma decisão de orçamento em muitos casos, onde se considera que o tempo de DBA é mais barato do que mais hardware. No entanto, existem alguns casos de HPC em que simplesmente não é possível criar uma caixa maior, por isso é necessário otimizar o que você tem. Para o resto de nós que não estão usando servidores de banco de dados monstruosos, há sempre atualizações.
O outro campo, e aquele a que eu atribuo, lida com isso de forma diferente. Ele coloca mais fé na abstração de armazenamento e tende a escalar muito melhor. Em vez de pares R10, você coloca todos esses pares em um conjunto RAID10; ou alternadamente um pequeno número de conjuntos RAID10. Isso permite que a agregação de IOP seja igual à anterior, mas cada arquivo de dados / espaço de tabela / banco de dados obtém acesso a um pouco da capacidade de surto. Usando vários conjuntos R10, você pode fornecer separação de E / S para os bancos de dados e arquivos de log críticos que precisam deles. A necessidade de microgerenciar o desempenho por arquivo é bastante reduzida.