Qual é a vantagem de dividir uma tabela mysql em outras menores sem distribuição física?

4

Eu já vi esse design na minha empresa.

Uma grande tabela mysql é dividida em dezenas de menores de esquema idêntico no mesmo servidor no mesmo banco de dados, sem qualquer distribuição física, sem innodb_file_per_table , sem particionamento, etc. Os dados são distribuídos uniformemente e o padrão de acesso de leitura / gravação é uniforme em todas as tabelas.

Qual é a vantagem de fazer isso em termos de desempenho?

    
por Arrix 16.01.2012 / 07:47

1 resposta

4

Se suas leituras / gravações forem distribuídas uniformemente, acho que não há vantagem no desempenho. Se você escrevesse pesado e escrevesse para, por exemplo, apenas 2-3 das tabelas - então você poderia se beneficiar (veja os slides 28-34 de esta apresentação).

Algumas ideias sobre benefícios operacionais:

  • Será mais fácil dimensionar / fragmentar quando houver muitos dados ou muito tráfego.
  • Dependendo de como seus backups são feitos, pode ser mais rápido recuperar algo se você puder determinar em qual das tabelas os dados perdidos foram localizados.

Editar: mais uma ideia: se as consultas forem executadas em paralelo, pode haver benefícios de desempenho - você pode obter mais IOPS do seu RAID e melhor localização do sistema de vários núcleos se o trabalho conjunto se encaixa na memória.

    
por 16.01.2012 / 08:07