2010-06-02 13 views
6

Mein Import von SQL über die MySQL-Konsole ist ziemlich langsam, und da unsere SQL-Datei jeden Tag zunimmt, würde ich gerne wissen, ob es Alternativen gibt, wie Sie importieren SQL-Datei schneller.MySQL-Konsole langsam beim Import von großen SQL-Dateien

Der Wechsel zu Oracle oder anderen Systemen ist keine Option, die Konfiguration muss gleich bleiben.

Derzeit ist die SQL-Datei: 1,5 GB. Ich bin auf WAMP mit Apache 2.2.14, PHP 5.2.11 und MySQL 5.1.41.

Vielleicht ist das Problem hier, Import wird durch eine einfache getan:

mysql -u username -p dbname < sqlfilename.sql 

Irgendwelche Vorschläge?

+0

Verwenden Sie mysqlimport oder LOAD DATA INFILE ? –

+0

Dies ist etwas, das in der Sql platziert werden muss, wenn ich richtig bin, das ist nicht möglich, da Sie eine Sql-Datei, die 1,4 Gb in einem Editor ist, nicht ändern können und es von einer externen Quelle kommt. – Kennethvr

+0

Es kann jemanden helfen: Starten Sie zuerst Ihren Computer, dann deaktivieren Sie Ihre Antivirus/Firewalls/Bandbreiten-Tracker + alle anderen Programme, die Sie nicht ausführen müssen. Aber wenn ich diese beiden Dinge deaktiviere, habe ich die Geschwindigkeit wie 6x erhöht. – Andrew

Antwort

5

Wenn Indizes während des Imports aktiviert sind, verlangsamt sich der Server auf Crawl. ALTER TABLE Tabellenname DISABLE KEYS; und die Verwendung von ..ENABLE KEYS vor und nach dem Import, wird die Importgeschwindigkeit verbessern, aber es wird einige Zeit dauern, Indizes neu zu erstellen, so dass es vielleicht kein großer Geschwindigkeitsgewinn ist.

Auch bietet die Verwendung von myisam -Tabellen (im Gegensatz zu innodb mit referenziellen Integritätsoptionen) normalerweise eine bessere Leistung, da keine referenziellen Integritätskosten anfallen.

Persönlich verwende ich nicht import-Anweisung von mysql-Konsole, aber importieren Sie SQL-Dateien mit mysql -uUSER -pPASS DBNAME < file.sql, und es funktioniert gut für mich.

Ich hoffe, es hilft.

+0

das ist, wie ich gerade rollen ... und das ist nicht schnell auf große Daten ... – Kennethvr

+1

Verwenden Sie mysqlimport Befehl. Es dauert eine flache Datei, die Daten in einem Tab-oder-etwas-sonst-getrennt-Format enthält, und importieren sie direkt in die Tabelle, schneller als SQL-Abfragen auszuführen. –

+2

Weitere Informationen zum Befehl mysqlimport finden Sie unter http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html, wenn Sie sich nicht damit auskennen. –

0

Ich bin mir nicht sicher, ob dies Ihr Problem lösen wird, weil ich nicht sicher bin, wo der Engpass ist ... Allerdings war ich sehr beeindruckt von dem kostenlosen Toad for MySQL Tool als Ersatz MySQL Management Console. Es hat großartige Import-Tools und ist in der Regel IMO besser als die Standard-MySQL-Management-Konsole.

+0

hat jemand sonst Erfahrung mit Toad zu diesem Thema mit riesigen Datendateien? – Kennethvr

+0

Toad Link ist gebrochen ... – DrCord

+0

@DrCord - aktualisiert. – UpTheCreek

1

Schalt autocommit ausgeschaltet ist die erste einer Reihe von in Bulk Data Loading for InnoDB Tables gegebenen Empfehlungen zu beschleunigen Operationen für MySQL wiederherzustellen.

Anstatt Autocommit manuell zur Wiederherstellungszeit zu wechseln, können Sie Ihre MySQL-Daten bereits auf eine Weise ausgeben, die alle notwendigen Anweisungen direkt in Ihre SQL-Datei enthält.

Der Befehlszeilenparameter für mysqldump lautet --no-autocommit. Sie können auch erwägen, --opt hinzuzufügen, die eine Kombination anderer Parameter festlegt, um Wiederherstellungsvorgänge zu beschleunigen. Hier

ist ein Beispiel für eine komplette mysqldump Kommandozeile, wie ich es verwenden, mit --no-autocommit und --opt:

mysqldump -hlocalhost -uMyUser -p'MyPassword' --no-autocommit --opt --default-character-set=utf8 --quote-names MyDbName > dump.sql 

Einzelheiten dieser Parameter finden Sie in der reference of mysqldump

Verwandte Themen