Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment insérer un très grand nombre d'enregistrements dans une base de données MySql le plus rapidement possible

Il existe plusieurs façons d'optimiser les insertions en vrac. Certains sont :

  • LOAD DATA INFILE . Il existe une API wrapper pour . NET . C'est le moyen le plus rapide, mais il présente certaines limitations et différences sémantiques par rapport aux simples insertions.

  • INSERT à plusieurs lignes déclarations :

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

    Vous ne devez pas insérer 20 000 000 de lignes à la fois, mais vous pouvez essayer 1 000 à 10 000 pour une très grande accélération. C'est un moyen simple et très simple d'augmenter la vitesse. Un facteur de 10 et parfois bien plus est souvent possible.

  • Verrouillage de la table (LOCK TABLES ).

  • Désactivation temporaire des index.

  • Réglage des options MySQL.

  • INSERT DELAYED (probablement pas très utile ici).

La documentation vous donne des détails plus élaborés sur les options. Certaines options dépendent du type de table (InnoDB vs MyISAM ).

Une suggestion générale :spécifiez toujours les colonnes que vous insérez devant VALUES . Cela rend le code plus maintenable.