Estou tentando migrar de uma instância do MySQL AWS RDS com um SSD enorme e muito espaço em excesso para um pequeno, e a migração de dados é o único método. Existem quatro tabelas no intervalo de 330 GB a 450 GB e a execução do mysqldump, em um único thread, enquanto o encaminhamento direto para a instância RDS de destino é estimado em cerca de 24 horas por pv (copiando a 5 mbps).
Eu escrevi um script bash que chama vários mysqldump usando ' & ' no final e um --where
parâmetro calculado, para simular multithreading. Isso funciona e atualmente leva menos de uma hora com 28 threads.
No entanto, estou preocupado com qualquer perda potencial de desempenho durante a consulta no futuro, pois não estarei inserindo na sequência das colunas auto_increment id.
Alguém pode confirmar se esse seria o caso ou se estou sendo paranóico sem motivos.
Qual solução você usou para uma única tabela que está na casa dos 100 GB? Por um motivo específico, quero evitar o uso do AWS DMS e definitivamente não quero usar ferramentas que não são mantidas há algum tempo.
As tabelas são por natureza não classificadas, portanto você não terá nenhuma perda de desempenho nesse site, após inserir seus dados, mas não sabemos como suas instâncias são menores, não podemos dizer o impacto que isso terá.
Seu índice nesse campo será classificado e, portanto, encontrará as linhas desejadas com bastante rapidez, pelo menos mais rápido do que a varredura da coluna do furo.
Não é alto, não há problema de desempenho em nenhuma das causas
Você está correto que causará a fragmentação do índice clusterizado. No entanto, se for uma coluna de incremento automático, os dados não foram realmente classificados por nada significativo. Você passou de uma bagunça não classificada para uma bagunça não classificada diferentemente classificada.
Selecionando/atualizando/lendo algumas linhas por vez? Não é grande coisa - a árvore B ainda saberá como encontrar a página correta sem muito esforço adicional.
Você terá problemas se estiver tentando dividir grandes atualizações/exclusões usando intervalos da coluna de incremento automático, pois as linhas serão espalhadas pelas páginas.
Se o desempenho se tornar um problema, você pode reconstruir o índice, as versões mais recentes do MySQL devem ser capazes de fazer isso sem deixar a tabela offline.
Como um aparte - você tentou classificar os dados pela coluna de incremento automático e depois executar um carregamento em massa?