Switch partition in SQL Server
Ich habe eine Tabelle mit Partitionen. Nur die erste partition enthält die Daten für die 4 Monate, die anderen Partitionen, die die partition eingestellt als Links.
Ich teilen möchten, auf die erste partition, die von Tag zu, die Grenze ist 4/2/2016 bis 15/5/2016.
Meine Frage ist: soll ich wechseln von Links oder von rechts?
Zum Beispiel, wenn ich den Schalter auf 5/2/2016, die system schreiben 4/2/2016 (nur ein Tag) oder schreiben Sie an die zweite 5/2/2016-15/5/2016
Dank
InformationsquelleAutor ea_1 | 2016-05-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich benutze ungetrennt Datum im format YYYYMMDD in meiner Antwort um Unklarheiten zu vermeiden.
Mit einem
RANGE LEFT
partition function-range-Spezifikation, eine neue partition mit dem inklusiv-die neue Grenze wird erstellt, um die Links der vorhandenen Teile gespalten. Zeilen in der vorhandenen partition werden dann bewegt, um die neue partition in die Aufnahme der neuen Grenzen. Bewegung nur einem Tag Daten mit einemRANGE LEFT
Bereich, Sie beginnen sollte durch die Teilung frühestens mit dem Zeitpunkt ('20160204') bis zum erreichen der gewünschten end-Datum ('20160515').Es ist mir unklar, was genau Ihre bestehenden Grenzen sind aber bewusst sein, dass die untere Grenze der ersten partition ist immer
NULL
. Mit einemRANGE LEFT
Reihe, die erste partition enthält alle Zeilen, die weniger als oder gleich zu der ersten Grenze. Für die Zwecke meiner Antwort nehme ich an, dass die erste vorhandene Grenze '20160506' und enthält Daten, die ab diesem Zeitpunkt oder früher.Ich empfehle Ihnen, vermeiden Aufspaltung nicht-leeren Partitionen. Nach der Der SQL Server-Onlinedokumentation, verschieben von Daten von einem DDL -
SPLIT
eine nicht-leere partition benötigt etwa 4-mal die Protokollierung im Vergleich zu normalen DML-operation. Dies ist besonders teuer, mit großen Tabellen, werden Häufig verwendet, in der Partitionierung Szenarien.Anderen Methode zu erreichen, das gewünschte Ergebnis, wenn die Tabelle und die Indizes ausgerichtet sind (partitioniert mit der gleichen Funktion), ist das erstellen einer staging-partition function, partition scheme, Tabelle, genau wie die aktuellen, aber mit unterschiedlichen Namen. Dann
SWITCH
die gesamte erste partition in die staging-Tabelle und gehen Sie folgendermaßen vor:1) Für jedes neue Datum partition, ÄNDERN Sie die original-partition-Schema
NEXT USED
Dateigruppe wie gewünscht für die neue Datum-partition und teilen Sie der ursprünglichen partition-Funktion mit dem neuen Datum Grenze. Dies wird die neue leere Partitionen, die in der ursprünglichen Tabelle.2) Partitionieren der Inszenierung von Indizes mit original Partitionsschema. Diese kann getan werden, möglichst effizient mit
CREATE INDEX...MIT(DROP_EXISTING=ON)
.3) Jetzt, dass die original-und staging-Tabelle ausgerichtet sind, ist
SWITCH
jede staging-Tabelle-partition wieder in den leeren original von Tabellen-Partitionen.Unten ist ein Beispiel-Skript. Stellen Sie die Tabelle, partition function, partition scheme, DDL, wenn Sie weitere Informationen benötigen.
InformationsquelleAutor Dan Guzman