Wie beschleunigt man das Laden von Daten in InnoDB (LOAD DATA INFILE)?

7

Ich möchte das Laden von Daten beschleunigen.

Ich benutze MySQL 5.5, InnoDB und habe 1M Zeilen von Daten (65Mb Datei). Es dauert 5 Minuten.

Welche mysql Einstellungen und Befehle beeinflussen die Geschwindigkeit von LOAD DATA INFILE für InnoDB?

Danke.

    
Jean Louis 16.02.2011, 19:12
quelle

5 Antworten

18

Ich kann diese Einstellungen empfehlen, um die Ladezeit zu verbessern:

  • innodb_doublewrite = 0
  • innodb_support_xa = 0
  • innodb_buffer_pool_size = (50-80% des Systemspeichers)
  • innodb_log_file_size = (eine große Anzahl - 256M usw.)
  • innodb_flush_log_at_trx_commit = 0

Abgesehen von Einstellungen gibt es einige Dinge, die Sie selbst tun können:

  • Erstellen Sie Indizes nach dem Laden (dies ist eine neue Optimierung mit 5.5 / InnoDB Plugin).
  • Sortieren Sie die Datendatei vor dem Laden.
  • Teilen Sie die Datendatei und laden Sie sie parallel.
Morgan Tocker 19.02.2011, 20:30
quelle
4

Versuchen Sie, Indizes und Trigger zu entfernen. Sie können sie nach dem Laden neu erstellen. Sehen Sie sich auch einige der Hochlasteinstellungen in my-huge.cnf anstelle der Standardeinstellungen an.

Einige weitere Leistungseinstellungen für innodb:

Ссылка

    
jspcal 16.02.2011 19:16
quelle
2

Das ist vielleicht nicht genau das, wonach Sie suchen, aber es ist ein Trick, den ich in der Vergangenheit benutzt habe

%Vor%

Ich hoffe, es hilft.

    
Sean Milheim 16.02.2011 19:25
quelle
0

Stellen Sie außerdem sicher, dass die binäre Protokollierung nach Möglichkeit deaktiviert ist.

    
cool 16.01.2015 18:30
quelle
0

Wenn Sie es eilig haben, weil Sie den Inhalt einer Live-Tabelle ersetzen, dann tun Sie es stattdessen:

%Vor%

Das RENAME ist 'momentan' und atomar, also bist du 'nie', unabhängig von der Tabellengröße.

(Sie brauchen sich also nicht so viele Gedanken über die Beschleunigung von LOAD zu machen.)

    
Rick James 05.12.2015 00:54
quelle