Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Partitioning / Sharding / Splitting - qual caminho seguir?


Você definitivamente começará a ter problemas nessa tabela de 42 GB, uma vez que ela não cabe mais na memória. Na verdade, assim que não caber mais na memória, o desempenho será degradado extremamente rapidamente. Uma maneira de testar é colocar essa tabela em outra máquina com menos memória RAM e ver o desempenho dela.

Isso está incorreto. O particionamento (através do recurso no MySQL 5.1, ou a mesma coisa usando tabelas MERGE) pode fornecer benefícios significativos de desempenho mesmo se as tabelas estiverem na mesma unidade.

Como exemplo, digamos que você esteja executando consultas SELECT em sua grande tabela usando um intervalo de datas. Se a tabela for inteira, a consulta será forçada a varrer toda a tabela (e nesse tamanho, mesmo o uso de índices pode ser lento). A vantagem do particionamento é que suas consultas só serão executadas nas partições onde for absolutamente necessário. Se cada partição tiver 1 GB de tamanho e sua consulta precisar acessar apenas 5 partições para se cumprir, a tabela combinada de 5 GB é muito mais fácil para o MySQL lidar do que uma versão monstruosa de 42 GB.

Uma coisa que você precisa se perguntar é como você está consultando os dados. Se houver uma chance de que suas consultas precisem acessar apenas determinados blocos de dados (ou seja, um intervalo de datas ou um intervalo de IDs), algum tipo de particionamento será benéfico.

Ouvi dizer que ainda há alguns bugs com o particionamento do MySQL 5.1, particularmente relacionado ao MySQL escolher a chave correta. As tabelas MERGE podem fornecer a mesma funcionalidade, embora exijam um pouco mais de sobrecarga.

Espero que ajude, boa sorte!