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

O desempenho do MySQL Insert diminui em uma tabela grande


Você não disse se este era um sistema de teste ou produção; Presumo que seja produção.

É provável que você tenha a tabela em um tamanho em que seus índices (ou todo o lote) não cabem mais na memória.

Isso significa que o InnoDB deve ler as páginas durante as inserções (dependendo da distribuição dos valores de índice de suas novas linhas). A leitura de páginas (leituras aleatórias) é muito lenta e deve ser evitada se possível.

O particionamento parece ser a solução mais óbvia, mas o particionamento do MySQL pode não se adequar ao seu caso de uso.

Você certamente deve considerar todas as opções possíveis - coloque a mesa em um servidor de teste em seu laboratório para ver como ela se comporta.

Sua chave primária me parece que possivelmente não é necessária (você tem outro índice exclusivo), portanto, eliminá-la é uma opção.

Considere também o plugin e a compactação innodb, isso fará com que seu innodb_buffer_pool vá mais longe.

Você realmente precisa analisar seus casos de uso para decidir se realmente precisa manter todos esses dados e se o particionamento é uma solução sensata.

Fazer qualquer alteração neste aplicativo provavelmente introduzirá novos problemas de desempenho para seus usuários, portanto, você deve ser muito cuidadoso aqui. Se você encontrar uma maneira de melhorar o desempenho da inserção, é possível que isso reduza o desempenho da pesquisa ou o desempenho de outras operações. Você precisará fazer um teste de desempenho completo no hardware de nível de produção antes de liberar essa alteração.