Das Folgende ist einfach nur verrückt zu schimpfen und zu schwärmen ...
Wenn Sie alle Daten in einer Tabelle belassen (keine Partitionierung), haben Sie O (log n) Suchzeiten mit einem Schlüssel. Nehmen wir den schlechtesten Index der Welt, den Binärbaum. Jeder Baumknoten hat genau einen Schlüssel. Ein perfekt ausbalancierter binärer Baum mit 268.435.455 (2 ^ 28 - 1) Baumknoten hätte eine Höhe von 28. Wenn Sie diesen binären Baum in 16 separate Bäume aufteilen, erhalten Sie 16 binäre Bäume mit jeweils 16.777.215 (2 ^ 24 - 1). Baumknoten für eine Höhe von 24. Der Suchpfad wird um 4 Knoten reduziert, was einer Höhenreduzierung von 14,2857% entspricht. Wenn die Suchzeit in Mikrosekunden angegeben ist, ist eine Reduzierung der Suchzeit um 14,2857% nicht zu vernachlässigen.
In der realen Welt hätte ein BTREE-Index Treenodes mit mehreren Schlüsseln. Bei jeder BTREE-Suche wird eine binäre Suche innerhalb der Seite ausgeführt, wobei möglicherweise auf eine andere Seite verwiesen wird. Wenn zum Beispiel jede BTREE-Seite 1024 Schlüssel enthält, wäre eine Baumhöhe von 3 oder 4 die Norm, tatsächlich eine kurze Baumhöhe.
Beachten Sie, dass eine Aufteilung eines Tisches die Höhe des bereits kleinen BTREE nicht verringert. Bei einer Aufteilung von 260 Millionen Zeilen besteht sogar die große Wahrscheinlichkeit, dass mehrere BTREEs mit derselben Höhe vorhanden sind. Die Suche nach einem Schlüssel durchläuft möglicherweise jedes Mal alle Stamm-BTREE-Seiten. Nur einer wird den Pfad des benötigten Suchbereichs erfüllen.
Nun erweitern Sie diese. Alle Partitionen befinden sich auf demselben Computer. Wenn Sie nicht für jede Partition separate Datenträger haben, haben Sie Disk I / O- und Spindeldrehungen als automatischen Engpass außerhalb der Partitionssuchleistung.
In diesem Fall bringt Ihnen die Datenbankparitionierung auch dann nichts, wenn id der einzige verwendete Suchschlüssel ist.
Die Partitionierung von Daten sollte dazu dienen, Daten zu gruppieren, die logisch und zusammenhängend derselben Klasse angehören. Die Leistung beim Durchsuchen jeder Partition muss nicht der Hauptaspekt sein, solange die Daten korrekt gruppiert sind. Wenn Sie die logische Partitionierung erreicht haben, konzentrieren Sie sich auf die Suchzeit. Wenn Sie Daten nur durch ID trennen, ist es möglich, dass auf viele Datenzeilen nie zum Lesen oder Schreiben zugegriffen wird. Nun sollte dies eine wichtige Überlegung sein: Suchen Sie alle IDs, auf die am häufigsten zugegriffen wird, und partitionieren Sie sie danach . Alle IDs, auf die weniger häufig zugegriffen wird, sollten sich in einer großen Archivtabelle befinden, auf die durch Indexsuche für diese Abfrage "Einmal in einem blauen Mond" weiterhin zugegriffen werden kann.
Insgesamt sollten mindestens zwei Partitionen vorhanden sein: eine für IDs, auf die häufig zugegriffen wird, und die andere für die übrigen IDs. Wenn die IDs, auf die häufig zugegriffen wird, ziemlich groß sind, können Sie diese optional partitionieren.