Ich habe mich auch damit befasst und obwohl ich bei weitem die Referenz in dieser Angelegenheit bin, gibt es einige wichtige Fakten, die ich gesammelt habe, und Punkte, die ich gerne teilen möchte:
Eine Partition ist eine Aufteilung einer logischen Datenbank oder ihrer Bestandteile in verschiedene unabhängige Teile. Datenbank Partitionierung wird in der Regel für die Verwaltbarkeit, Leistung oder Verfügbarkeit Gründen erfolgt, wie für den Lastausgleich.
https://en.wikipedia.org/wiki/Partition_(database)
Sharding ist eine Art der Partitionierung, z. B. Horizontal Partitioning (HP).
Es gibt auch eine vertikale Partitionierung (VP), bei der Sie eine Tabelle in kleinere Teile aufteilen. Bei der Normalisierung werden auch Spalten auf Tabellen aufgeteilt, aber die vertikale Partitionierung geht darüber hinaus und partitioniert Spalten, selbst wenn sie bereits normalisiert sind.
https://en.wikipedia.org/wiki/Shard_(database_architecture)
Ich mag Tony Bacos Antwort auf Quora sehr, wo er Sie dazu bringt, in Schemata zu denken (anstatt in Spalten und Zeilen). Er behauptet, dass...
" Horizontale Partitionierung " oder Sharding repliziert [kopiert] das Schema und teilt die Daten dann basierend auf einem Shard-Schlüssel.
Bei der " vertikalen Partitionierung " wird das Schema aufgeteilt (und die Daten werden für die Fahrt mitgeführt).
https://www.quora.com/Was-der-Differenz- zwischen-sharding-DB-tables-and-partitioning-them
Das Oracle Database Partitioning Guide enthält einige nette Zahlen. Ich habe einige Auszüge aus dem Artikel kopiert.
https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm
Wann muss eine Tabelle partitioniert werden?
Hier einige Vorschläge, wann eine Tabelle partitioniert werden soll:
- Tabellen mit mehr als 2 GB sollten immer als Kandidaten für die Partitionierung betrachtet werden.
- Tabellen mit historischen Daten, in denen der neuesten Partition neue Daten hinzugefügt werden. Ein typisches Beispiel ist eine historische Tabelle, in der nur die Daten des aktuellen Monats aktualisiert werden können und die anderen 11 Monate schreibgeschützt sind.
- Wenn der Inhalt einer Tabelle auf verschiedene Arten von Speichergeräten verteilt werden muss.
Partitionsschnitt
Das Bereinigen von Partitionen ist das einfachste und auch wesentlichste Mittel, um die Leistung mithilfe der Partitionierung zu verbessern. Das Bereinigen von Partitionen kann die Abfrageleistung häufig um mehrere Größenordnungen verbessern. Angenommen, eine Anwendung enthält eine Auftragstabelle, die einen historischen Auftragsdatensatz enthält, und diese Tabelle wurde nach Wochen aufgeteilt. Eine Abfrage, bei der Bestellungen für eine einzelne Woche angefordert werden, greift nur auf eine einzelne Partition der Tabelle "Bestellungen" zu. Wenn die Tabelle "Bestellungen" historische Daten für 2 Jahre enthält, greift diese Abfrage auf eine Partition anstatt auf 104 Partitionen zu. Diese Abfrage kann möglicherweise 100-mal schneller ausgeführt werden, allein aufgrund des Bereinigens von Partitionen.
Partitionierungsstrategien
Sie können ihren Text lesen und ihre Bilder visualisieren, die alles ziemlich gut erklären.
Und schließlich ist es wichtig zu verstehen, dass Datenbanken äußerst ressourcenintensiv sind:
- Zentralprozessor
- Scheibe
- I / O.
- Erinnerung
Viele Datenbankadministratoren partitionieren auf demselben Computer, auf dem die Partitionen alle Ressourcen gemeinsam nutzen, aber durch Aufteilen der Daten und / oder des Index eine Verbesserung der Festplatte und der E / A bewirken.
Während andere Strategien eine "Shared Nothing" -Architektur verwenden, befinden sich die Shards auf separaten und unterschiedlichen Recheneinheiten (Knoten), die 100% der CPU, der Festplatte, der E / A und des Speichers für sich haben. Bereitstellung eigener Vorteile und Komplexitäten.
https://en.wikipedia.org/wiki/Shared_nothing_architecture