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

Como inserir um número muito grande de registros em um banco de dados MySql o mais rápido possível


Há várias maneiras de otimizar inserções a granel. Alguns são:

  • LOAD DATA INFILE . Existe uma API wrapper para . REDE . Essa é a maneira mais rápida, mas tem algumas limitações e diferenças semânticas em relação a inserções simples.

  • INSERT de várias linhas declarações:

    INSERT INTO temperature (temperature) VALUES (1.0), (2.0), (3.0), ...

    Você não deve inserir 20.000.000 linhas de uma vez, mas pode tentar 1.000-10.000 para uma aceleração muito grande. Esta é uma maneira simples e sem problemas de aumentar a velocidade. Um fator de 10 e às vezes muito mais é muitas vezes possível.

  • Bloqueando a tabela (LOCK TABLES ).

  • Desativando índices temporariamente.

  • Ajuste de opções do MySQL.

  • INSERT DELAYED (provavelmente não é tão útil aqui).

A documentação fornece detalhes mais elaborados nas opções. Algumas opções dependem do tipo de tabela (InnoDB vs. MyISAM ).

Uma sugestão geral:sempre especifique as colunas que você insere na frente de VALUES . Isso torna o código mais sustentável.