Sie können Zusammenführungstabellen verwenden, diese sind jedoch älter als die 4.x-Versionen. Wenn Ihre Anwendung manuell partitioniert wurde, weil entweder a) Sie eine sehr alte Version ausführen oder b) der ursprüngliche Entwickler keine Kenntnis von Tabellenpartitionen hatte.
Kurz gesagt, wenn Sie 5.1+ ausführen, können Sie mysql diese Partitionierung für Sie durchführen lassen. Siehe
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html Wenn Sie 5.5 verwenden, sollten Sie diese spezifischen Dokumente überprüfen, da Sie einige Unterschiede feststellen.
Partitionierung hat viele Vorteile. Es hängt jedoch wirklich von dem vorliegenden Datensatz, den Zugriffsmustern und der Art und Weise ab, wie er indiziert werden soll. Beachten Sie auch, dass meine folgenden Kommentare im Zusammenhang mit der Partitionierung von mysql 5+ stehen, NICHT mit älteren mysql Merge-Tabellen. obwohl sie manchmal in Bezug auf Partitionen diskutiert werden.
Einige Beispiele:
- Straight Bucketing (oder Hashing) basierend auf häufig verwendeten Suchschlüsseln. Wenn Sie so gut wie immer nach einem Primärschlüssel oder einem anderen eindeutigen Schlüssel suchen, kann mysql den Suchraum um den Faktor der Anzahl Ihrer Partitionen verringern. Beachten Sie jedoch, dass dies nachteilig sein kann, wenn Sie nach einem Schlüssel partitionieren und dann häufig nach einem anderen Schlüssel suchen. Wenn Sie nach einem Schlüssel suchen, dessen Daten nicht partitioniert sind, müssen WEITERE Suchvorgänge für Suchvorgänge durchgeführt werden (einer für jede Partition, ehrlich gesagt, es ist nicht bekannt, wo sich die Daten befinden).
- Stellen Sie sich Situationen vor, in denen Sie über einen zeitlich begrenzten Satz von Datensätzen verfügen, der nach Datum wächst, und in denen Sie den vorherigen Monat regelmäßig entfernen. Wenn Sie nach Datum partitionieren, können Sie einfach eine Partition löschen, die genauso schnell ist wie das Löschen einer Tabelle, egal wie groß. Wenn Sie eine solche Tabelle nach Datum bereinigen würden, müssten Sie eine oder mehrere DELETE-Abfragen ausführen, bei denen jede einzelne Zeile gelöscht wird. Der Nachteil dabei ist, dass mysql nicht automatisch neue Partitionen erstellt, sobald Sie das maximale Datum erreicht haben, das Sie in diesem Szenario berücksichtigt haben. Sie benötigen zusätzliche Wartungsskripte, die in Ihrem Teil erstellt wurden, um Partitionen nach Bedarf hinzuzufügen.
- Wenn Sie myisam verwenden, sind Überprüfungen und Wiederherstellungen viel schneller. Betrachten Sie eine 100G Myisam-Tabelle. Wenn Sie eine abgestürzte Tabelle wiederherstellen möchten, benötigen Sie mindestens etwa 100 GB freien Speicherplatz. Wenn es in 10 verschiedene Blöcke gleicher Größe aufgeteilt wurde, benötigen Sie nur 10 GB Speicherplatz (und weniger key_sort_buffer-Speicher für eine schnelle Wiederherstellung). Müsste aber für jede Partition eine Iteration machen.
Zusammenfassend kann der allgemeine Ansatz der Partitionierung von Tabellen viele Vorteile bieten. Es ist jedoch kein Wundermittel, blind angewendet zu werden, ohne Rücksicht auf Zugriffsmuster und wie genau Sie partitionieren.
Ich könnte mir Situationen vorstellen, in denen die gewünschte Partitionierung sehr anwendungsspezifisch ist und besser geeignet wäre, diese Logik in der Anwendungsschicht zu haben. Angesichts Ihrer Beschreibung des geraden Moduls 10 scheint dies jedoch kein solcher Fall zu sein.
BEARBEITEN
Beim Aufschreiben meiner Beschreibung habe ich vergessen, dass Sie angegeben haben, dass Ihre Tabelle 100.000 Zeilen enthält. Ohne das vollständige Schema Ihrer Tabelle und die durchschnittliche Zeilenlänge ist es schwer zu sagen, aber im Allgemeinen klingt das selbst für bescheidene Hardware mittelgroß. Zur gleichen Zeit, wenn es keine Probleme verursacht, wie es jetzt oder in absehbarer Zeit ist, dann nimm dir keine Zeit und führe Risiken ein, indem du es änderst.