Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Partitionierte Tabelle

Eine partitionierte Tabelle ist eine Basistabelle, deren Daten in mehreren Anwender-Spaces gespeichert sind. Die auf einem Space liegenden Daten der Tabelle werden als Partition der Tabelle bezeichnet. Alle Partitionen einer Tabelle müssen auf unterschiedlichen Spaces liegen. Es sind 2 bis 16 Partitionen pro Tabelle möglich. In SESAM/SQL werden die Daten satzweise auf die Partitionen aufgeteilt, das Zuordnungskriterium ist der Primärschlüsselwert eines Satzes.

Partitionierte Tabellen haben gegenüber nicht-partitionierten Tabellen folgende Vorteile:

  • Die Anwenderdaten können nach bestimmten Kriterien, z.B. monatsweise, übersichtlich strukturiert und in unterschiedlichen Partitionen bzw. Anwender-Spaces abgelegt werden. Eine Partition umfasst dann die Anwenderdaten, auf die aktuell zugegriffen wird.

  • Bei geeigneter Strukturierung bzw. Partitionierung wird die Größe der Anwender-Spaces, auf die aktuell zugegriffen wird, verkleinert.

    Ein Zugriff auf die Anwender-Spaces, die aktuell benötigt werden, ist auch dann möglich, wenn weitere Partitionen bzw. Anwender-Spaces der Tabelle nicht verfügbar sind, siehe Abschnitt „Teilverfügbarkeit“.

  • Die Sicherungs- und Reparaturzeiten können verkürzt werden, da die einzelnen Anwender-Spaces kleiner werden.

  • Die Tabelle kann größer als 64 GB sein.

Die folgende Übersicht stellt die wichtigsten Eigenschaften einer nicht-partitionierten und einer partitionierten Tabelle gegenüber:

Eigenschaft

nicht-partitionierte Tabelle

partitionierte Tabelle

Anzahl Anwender-Spaces

1

2 bis 16
(alle Spaces müssen disjunkt und vorher
angelegt sein)

Primärschlüssel

optional

obligatorisch
(ein- oder mehrspaltig möglich)

Primärschlüsselwerte
eines existierenden Satzes
mit UPDATE oder MERGE
ändern

erlaubt

nicht erlaubt
(Satz muss gelöscht und mit geändertem
Wert neu eingefügt werden)

Maximale Anzahl Sätze

ca. 4,3 Mrd.

ca. 268 Mio pro Partition, bei 16
Partitionen max. 4,3 Mrd. Sätze

Kleinste Sicherungs- und
Reparatureinheit

gesamte Tabelle

eine Partition
(bzw. der dazu gehörende Anwender
Space)

Metadaten

INFORMATION_SCHEMA:

  • BASE_TABLES

INFORMATION_SCHEMA:

  • BASE_TABLES 1

  • PARTITIONS

SYS_INFO_SCHEMA:

  • SYS_TABLES

SYS_INFO_SCHEMA:

  • SYS_TABLES1

  • SYS_PARTITIONS

Nur-CALL-DML-Tabellen

möglich

nicht möglich

Passwortschutz mit SEPA

möglich

nicht möglich


Tabelle 15: Eigenschaften nicht-partitionierter und partitionierter Tabellen

1Beim Spacenamen wird „_PARTITIONS_“ eingetragen

Weitere Eigenschaften von partitionierten Tabellen

  • Die Partitionierung einer partitionierten Tabelle kann mit der Utility-Anweisung ALTER PARTITIONING FOR TABLE geändert oder aufgehoben werden, siehe Abschnitt „Partitionierung einer Basistabelle ändern“ und das Handbuch „ SQL-Sprachbeschreibung Teil 2: Utilities“.

    Partitionsgrenzen können auch dadurch geändert werden, dass Sie die Tabelle in eine Exportdatei exportieren, die bestehende Tabelle mit DROP TABLE löschen und dann die Exportdatei als partitionierte Tabelle mit gleichem oder unterschiedlichem Namen und anderen Partitionsgrenzen importieren.

  • Die Definition von Spalten, Integritätsbedingungen, Indizes und Defaultwerten bezieht sich immer auf alle Partitionen.

  • Implizit angelegte Indizes oder explizit ohne USING SPACE Klausel angelegte Indizes werden immer auf dem Anwender-Space der ersten Partition gespeichert.

  • Fehlerdateien, die von SESAM/SQL angelegt werden, werden bei CHECK FORMAL für jeden betroffenen Space angelegt. Bei LOAD und UNLOAD wird eine Fehlerdatei für alle Partitionen angelegt.

  • Auf einem Anwender-Space, auf dem eine Partition gespeichert ist, dürfen andere Basistabellen, Indizes oder eine Partition einer anderen Tabelle gespeichert werden. Dieses Vorgehen wird aber nicht empfohlen, da sonst der Vorteil „kleine Sicherungs- und Reparatureinheiten“ geringer wird.

Teilverfügbarkeit

Für viele Arten von Zugriffen auf eine geeignet partitionierte Tabelle müssen nur die Anwender-Spaces, die aktuell benötigt werden, verfügbar sein. Weitere Partitionen bzw. Anwender-Spaces der Tabelle müssen nicht verfügbar sein. Dies wird als Teilverfügbarkeit von Partitionen bezeichnet.

Zusätzlich wird zwischen physikalischer und logischer Verfügbarkeit einer Partition unterschieden.


Physikalische und logische Verfügbarkeit

Physikalisch verfügbar heißt, dass auf den zur Partition gehörenden Space physikalisch zugegriffen werden kann und der Space im Zustand „space o.k.“ ist.

Logisch verfügbar heißt, dass der zur Partition gehörende Space SESAM/SQL-intern als physikalisch verfügbar vermerkt ist. Dieser Vermerk dient dazu, die Zugriffe zu beschleunigen, da nur der Vermerk und nicht der Space selber geprüft werden. Der Vermerk wird angelegt bzw. aktualisiert, wenn zum ersten Mal innerhalb einer DBH-Session per DML-Anweisung auf eine partitionierte Tabelle zugegriffen wird. Entsprechendes gilt für den ersten Zugriff nach dem Eintragen einer Datenbank in das SQL-Tabellenverzeichnis oder einem DBH-Start oder DBH-Restart.

Die physikalische und logische Verfügbarkeit spielt insbesondere bei DML-, DDL- und Utility-Anweisungen eine Rolle:

  • DML-Anweisungen setzen voraus, dass die betroffenen Partitionen logisch verfügbar sind. Entscheidend ist die durchsuchte Datenmenge, nicht die Treffermenge. D.h. es müssen alle Partitionen, die von einem Suchvorgang betroffen sind, logisch verfügbar sein. Beim Einfügen eines Satzes ist es z.B. möglich, dass auch eine benachbarte Partition durchsucht werden muss.

  • DDL-Anweisungen setzen voraus, dass die betroffenen Partitionen physikalisch verfügbar sind. Bei den Anweisungen CREATE INDEX, DROP INDEX, ALTER TABLE und DROP TABLE müssen alle Partitionen physikalisch verfügbar sein. Bei der Anweisung CREATE TABLE müssen alle Spaces, auf denen die partitionierte Tabelle angelegt werden soll, physikalisch verfügbar sein.

  • Utility-Anweisungen setzen in den meisten Fällen voraus, dass die betroffenen Partitionen physikalisch verfügbar sind. Eine Ausnahme bilden die Anweisungen LOAD ONLINE, UNLOAD ONLINE ... WHERE, EXPORT ... WHERE und CHECK CONSTRAINTS.
    Einzelheiten zur Verfügbarkeit von Partitionen bei Utility-Anweisungen finden Sie im Handbuch „ SQL-Sprachbeschreibung Teil 2: Utilities“.


Logische Verfügbarkeit ändern

Die logische Verfügbarkeit einer partitionierten Tabelle bleibt während einer DBH-Session unverändert, auch dann, wenn sich die physikalische Verfügbarkeit von Partitionen ändert. Nur nach RECOVER SPACE wird die logische und physikalische Verfügbarkeit aller angegebenen Anwender-Spaces neu bestimmt.

Mit den folgenden Administrationsanweisungen können Sie sich informieren und die logische Verfügbakeit ändern:

  • Mit SHOW-PARTITIONS können Sie sich über die logische Verfügbarkeit der einzelnen Partitionen einer partitionierten Tabelle informieren.

  • Mit CLOSE-SPACE setzen Sie alle auf diesem Space liegenden Partitionen auf „logisch nicht verfügbar“.

  • Mit REUSE-PARTITIONS aktualisieren Sie die logische Verfügbarkeit der Partitionen einer partitionierten Tabelle. Damit werden Partitionen, die bislang zwar physikalisch aber nicht logisch verfügbar sind, auf „logisch verfügbar“ gesetzt.