Ich mache viele INSERTs über LOAD DATA INFILE auf MySQL 5.0. Nach vielen Einfügungen, sagen wir ein paar hundert Millionen Zeilen (InnoDB, PK + ein nicht eindeutiger Index, 64 Bit Linux 4GB RAM, RAID 1), verlangsamen sich die Einfügungen beträchtlich und erscheinen IO gebunden. Werden Partitionen in MySQL 5.1 wahrscheinlich die Leistung verbessern, wenn die Daten in separate Partitionstabellen fließen?
Die vorherige Antwort ist falsch in seinen Annahmen, dass dies die Leistung verringern wird. Ganz im Gegenteil.
Hier ist ein langer, aber informativer Artikel und warum und wie Partitionierung in MySQL:
Die Partitionierung wird typischerweise, wie erwähnt, verwendet, um gleichartige Daten zu gruppieren. Auf diese Weise werden Ihre Tabellen nicht fragmentiert, wenn Sie sich dafür entscheiden, eine Partition zu archivieren oder zu zerstören. Dies schadet jedoch der Leistung nicht, es kann sie tatsächlich erhöhen. Sehen Sie, es sind nicht nur Deletionen, die Fragmente, Updates und Inserts können das auch tun. Durch das Partitionieren der Daten weisen Sie dem RDBMS die Kriterien (Indezes) zu, nach denen die Daten manipuliert und abgefragt werden sollen.
Bearbeiten: SiLent SoNG ist korrekt. DISABLE / ENABLE KEYS funktioniert nur für MyISAM, nicht für InnoDB. Ich wusste das nie, aber ich ging und las die Dokumente. Ссылка .
Das Aktualisieren von Indizes kann die Verlangsamung verlangsamen. Sie können während der Aktualisierung Indizes deaktivieren und sie wieder aktivieren, sodass sie einmal für die gesamte Tabelle generiert werden können.
%Vor%Dies führt dazu, dass alle Indizes auf einmal und nicht pro Zeile aktualisiert werden. Dies führt auch zu ausgeglicheneren BTREE-Indizes.
Wenn die Spalten INSERT überprüft werden (zum Beispiel Primärschlüssel), wird dies nur die Geschwindigkeit verringern: MySQL muss zusätzlich die Partitionierung entscheiden.
Alle Abfragen werden nur durch Hinzufügen von Indizes verbessert. Die Partitionierung ist nützlich, wenn Sie viele sehr alte Daten haben (z. B. Jahr & lt; 2000), die selten verwendet werden: dann ist es nett, eine Partition für diese Daten zu erstellen.
Prost!
Tags und Links mysql