DB2 Universal Database - Systemverwaltung


Partitionierung von Daten

Standardmäßig nimmt das Dienstprogramm zur Datenumverteilung an, daß jeder Hash-Partition dieselbe Anzahl von Zeilen durch das Hash-Verfahren zugeordnet wird. Daher partitioniert es die Hash-Partitionen gleichmäßig auf alle Datenbankpartitionen der Knotengruppe. Wenn durch das Hash-Verfahren nicht dieselbe Anzahl von Zeilen jeder Hash-Partition zugeordnet wird, können Sie mit Hilfe einer Verteilungsdatei die aktuelle Verteilung angeben. Diese Datei enthält für jede der 4 096 Hash-Partitionen einen Wert. Jeder Wert wird als Gewichtung für die entsprechende Hash-Partition verwendet. Das Dienstprogramm zur Datenumverteilung generiert eine Zielpartitionierungszuordnung, in der alle Datenbankpartitionen annähernd dieselbe Gewichtung haben. Das heißt, mit Hilfe der Verteilungsdatei kann eine gleichmäßige Datenverteilung erreicht werden, auch wenn die Werte der Daten eine ungleichmäßige Verteilung aufweisen.

Das Programm AutoLoader kann mit der Option ANALYZE zur Erstellung einer Datenverteilungsdatei verwendet werden. Sie können diese Datei als Eingabe für das Dienstprogramm zur Datenumverteilung verwenden. Weitere Informationen zum Dienstprogramm AutoLoader finden Sie im Handbuch Versetzen von Daten Dienstprogramme und Referenz.

Alternativ können Sie auch die SQL-Funktionen PARTITION und NODENUMBER verwenden, um die aktuelle Datenverteilung über die Hash-Partitionen bzw. Datenbankpartitionen zu bestimmen. (Die Funktion PARTITION wird zur Bestimmung der Verteilung über Hash-Partitionen verwendet.) Aus diesen Informationen können Sie sowohl eine Verteilungsdatei als auch eine Zielpartitionierungszuordnung ableiten.

Gehen Sie wie folgt vor, um beispielsweise festzustellen, ob es Datenbankpartitionen gibt, die aufgrund von ungleichmäßiger Datenverteilung eine außergewöhnlich große Zahl von Zeilen enthalten, und welche Partitionen dies sind:

   SELECT PARTITION(column_name), COUNT(*) FROM table_name
      GROUP BY PARTITION(column_name)
      ORDER BY PARTITION(column_name) DESC
   FETCH FIRST 100 ROWS ONLY     

Sie sollten sicherstellen, daß table_name (Tabellenname) die größte Tabelle und column_name (Spaltenname) eine geeignete Spalte in dieser Tabelle ist.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]