InnoDB: Foreign Keys beschleunigen
Peter
- datenbank
Hallo,
um die Verwaltung einer größeren Datenbank zu vereinfachen, benutze ich (mysql und) Innodb. D.h. wird ein Kunde gelöscht bzw. seine Kundennr. aus einer bestimmten Tabelle, so sollen alle darauf zeigenden Datensätze aus anderen Tabellen ebenfalls gelöscht werden.
Eigentlich sollte das ja Arbeit abnehmen, was es an sich auch tut und vor allem keinen Müll auf dem System hinterläßt.
Leider ist das _extrem_ langsam! Ich habe gestern Abend das Löschen aller Kunden veranlaßt und das Ding rödelt immer noch.
Betroffene Daten sind ca. 4GB groß.
Wie kann man das Ganze beschleunigen?
Müßte ich dann irgendwie die InnoDB-Files aufteilen, damit die Kiste nicht so lange suchen muß?
Achso: Am Rechner kann es nicht liegen! Ist ein Opteron mit 4GB Speicher.
Danke für jeden Hinweis.
Peter
Hallo Peter,
Wie kann man das Ganze beschleunigen?
Müßte ich dann irgendwie die InnoDB-Files aufteilen, damit die Kiste nicht so lange suchen muß?Achso: Am Rechner kann es nicht liegen! Ist ein Opteron mit 4GB Speicher.
genau, das ist der Grund!
Standardmäßig packt MySQL bei Verwendung von InnoDB alles in eine Datei. Das ist bei großen Datenmengen ein Problem, weil das System in dem File rumsuchen muß.
Bei Deinem Speicher würde ich folgendes eintragen (unter /etc/my.cnf):
innodb_file_per_table
das erzeugt ein Datenfile pro Tabelle.
Außerdem:
innodb_buffer_pool_size = 2000M
innodb_additional_mem_pool_size = 1000M
innodb_log_file_size = 250M
innodb_log_buffer_size = 80M
Viele Grüße,
Reiner
Hallo Reiner,
danke!!!
Peter