Peter: InnoDB: Foreign Keys beschleunigen

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

  1. 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:

    You can set .._buffer_pool_size up to 50 - 80 %

    of RAM but beware of setting memory usage too high

    innodb_buffer_pool_size = 2000M
    innodb_additional_mem_pool_size = 1000M

    Set .._log_file_size to 25 % of buffer pool size

    innodb_log_file_size = 250M
    innodb_log_buffer_size = 80M

    Viele Grüße,
    Reiner

    1. Hallo Reiner,

      danke!!!

      Peter