Frage

Ich habe jetzt 36 Stunden lang darauf gewartet, dass eine 12 -GB -SQL -Datei mit einer einfachen Importierung importiert wird type site.sql | mysql Befehl. Ich kann das sehen ibdata1 wächst noch, derzeit fast 40 GB.

In Anbetracht der Auslöser und gespeicherten Verfahren am Ende des SQL denke ich nur, dass MySQL Daten und Schlüsselindizes hinzufügen sollte.

Die Site.sql wurde mit diesem Befehl von einem anderen Server generiert:

mysqldump -R -e --databases site --add-drop-database --add-create-database --add-drop-table -C --single-transaction --triggers

Was dauert es so lange?

War es hilfreich?

Lösung

Versuche dies:

$ ps -ef|grep [m]ysql

Identifizieren Sie dann die Prozess -ID

$ strace -cp <pid>

Lassen Sie es 10 Sekunden oder eine Minute dann ^C. Das wird Ihnen sagen, wo der Prozess seine Zeit verbringt, z. B. könnte es nur auf die Festplatte warten, wenn Sie gesehen haben read und write dominieren.

Andere Tipps

Haben Sie InnoDB -Tabellen mit einem Primärschlüssel

  1. enthalten mehrere Spalten?
  2. einen breiten Varchar haben?
  3. Und viele nicht eindeutige Indizes?
  4. Ein oder mehrere nicht eindeutige Indizes, die einen weiten Schlüssel haben?

Jede dieser Bedingungen kann wahrscheinlich dazu führen, dass große BTREE -Knoten in Ihren Indizes in jedem BTree -Knoten nur sehr wenige Blätter haben. Die Cluster-Taste in der Primärschlüssel wird auch an jeden nicht eindeutigen Schlüsseleintrag in nicht klusterten Schlüssel angeschlossen.

Eine weitere Überlegung: Sind die Summe der InnoDB -Datenseiten deutlich geringer als innoDB -Indexseiten?

Sie können das mit dieser Abfrage (in MB) herausfinden:

SELECT SUM(data_length)/POWER(1024,2) InnoDBData,
SUM(index_length)/POWER(1024,2) InnoDBIndexes
FROM information_schema.tables WHERE engine='InnoDB';

Zusätzliche Überlegung: Haben Sie eine binäre Protokollierung im DB -Server aktiviert, die Sie laden? Wenn Sie dies sind, tun Sie dies bitte auf dem Server, den Sie laden:

mysql -h... -u... -p... -A -e"SET sql_log_bin=0; source site.sql"

Ich hoffe das hilft !!!

Sind Sie sicher, dass die Tabellen, in denen Sie lesen, ohne Auslöser, Indizes und Einschränkungen sind? Welche Hardware und OS laufen Sie? Wie ist Ihr Speicher konfiguriert?

Ich bin mit Oracle besser vertraut, aber 12G -Importieren auf Tabellen ohne Auslöser, Indizes und Einschränkungen sollten problemlos mit 200 GB/h passen. Ein einzelner Auslöser kann den Prozess zu einer Schnecke machen, je nachdem, was das auslöst ...

ich hoffe das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top