Bei der Datenumverteilung in einer Tabelle arbeitet das Dienstprogramm in folgenden Schritten:
Wenn die Operation fehlschlägt, bevor die Daten der Tabelle vollständig umverteilt sind, reagiert das Dienstprogramm wie folgt:
Das Einschätzen des Platzbedarfs für Protokolle beim Verteilen von Daten ist wichtig. Die Größe des Protokolls muß ausreichend sein, damit die INSERT- und DELETE-Operationen darin aufgenommen werden können, die in jeder von der Umverteilung betroffenen Datenbankpartition ausgeführt werden. Die größten Protokollierungsanforderungen gelten entweder für die Datenbankpartition, die die meisten Daten verliert, oder für die Datenbankpartition, die die meisten Daten dazuerhält. Wenn Sie eine Veränderung hin zu einer größeren Zahl an Datenbankpartitionen vornehmen, dient das Verhältnis der momentanen Datenbankpartitionen zur neuen Zahl an Datenbankpartitionen zum Ermitteln der Zahl der INSERT- und DELETE-Operationen.
Wenn Sie beispielsweise die Zahl der Datenbankpartitionen von vier auf fünf erhöhen, werden von ca. zwanzig Prozent der vier ursprünglichen Datenbankpartitionen Daten in die neue Datenbankpartition verschoben. Das bedeutet, daß für die vier ursprünglichen Datenbankpartitionen zwanzig Prozent an DELETE-Operationen auf der Basis der Gesamtdatenmenge in jeder Datenbankpartition durchgeführt werden. In der neuen Datenbankpartition werden alle INSERT-Operationen durchgeführt (d. h. ein Wert, der gleichen Anzahl von DELETE-Operationen in allen vier ursprünglichen Datenbankpartitionen entspricht).
Beim obengenannten Beispiel wird von einer gleichmäßigen Verteilung der Daten ausgegangen. Es kann aber auch Fälle geben, in denen die Daten nicht gleichmäßig verteilt sind, wie beispielsweise, wenn im Partitionierungsschlüssel eine große Zahl an NULL-Werten enthalten ist. In diesem Fall würden sich alle diese Zeilen im alten Partitionierungsschema in einer bestimmten Datenbankpartition und im neuen Partitionierungsschema in einer anderen Datenbankpartition befinden. Dadurch kann die Menge an Protokollspeicherbereich, die für diese beiden Datenbankpartitionen erforderlich ist, möglicherweise die Menge deutlich übersteigen, die unter der Annahme einer gleichmäßigen Verteilung berechnet wurde.
Beim Durchführen der Berechnungen müssen Sie den Prozentsatz der Änderungen (z. B. zwanzig Prozent) mit der Größe der größten Tabelle multiplizieren. Dies ist erforderlich, weil die Umverteilung aller Tabellen jeweils als einzige Transaktion erfolgt.
Anmerkung: | Die größte Tabelle kann jedoch über eine gleichmäßige Verteilung verfügen, während die zweitgrößte (beispielsweise) eine oder mehrere stark vergrößerte Datenbankpartitionen enthält. In einem solchen Fall sollten Sie die zweite Tabelle anstatt der ersten verwenden. |
Wenn Sie die Höchstmenge an Daten berechnet haben, für die in einer Datenbankpartition INSERT- und DELETE-Operationen durchgeführt werden, verdoppeln Sie diese Zahl, um den Spitzenwert für die Größe der aktiven Protokolldatei zu ermitteln. Wenn dieser Wert die Begrenzung von 32 GB für die aktive Protokolldatei überschreitet, muß die Umverteilung von Daten schrittweise erfolgen. Es gibt ein Dienstprogramm mit dem Namen "makepmap", das zum Generieren einer Reihe von Zielpartitionszuordnungen für jeden Schritt verwendet werden kann.