PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Warum kann keine Partitionierungstabelle erstellt werden

"Declarative table partitioning", also Partitionierung als erstklassiges Feature des DBMS mit eigener Syntax, war in PostgreSQL 10 hinzugefügt .

In früheren Versionen können Sie den gleichen Effekt mit etwas mehr Aufwand durch "Tabellenvererbung" erreichen. Es gibt eine Seite im Handbuch, die beschreibt, wie man das manuell macht , zusammengefasst als:

  1. Erstellen Sie die "Master"-Tabelle, von der alle Partitionen erben werden.
  2. Erstellen Sie mehrere "untergeordnete" Tabellen, die jeweils von der Haupttabelle erben.
  3. Fügen Sie den Partitionstabellen Tabelleneinschränkungen hinzu, um die zulässigen Schlüsselwerte in jeder Partition zu definieren.
  4. Erstellen Sie für jede Partition einen Index für die Schlüsselspalte(n) sowie alle anderen gewünschten Indizes.
  5. Definieren Sie optional einen Auslöser oder eine Regel, um in die Haupttabelle eingefügte Daten an die entsprechende Partition umzuleiten.
  6. Stellen Sie sicher, dass der Konfigurationsparameter "constraint_exclusion" in postgresql.conf nicht deaktiviert ist. Wenn dies der Fall ist, werden Abfragen nicht wie gewünscht optimiert.

Wenn Sie nicht auf Version 10 aktualisieren können, können Sie zur Vereinfachung eine Erweiterung wie pg_partman wodurch Sie zusätzliche Funktionen zum Einrichten und Verwalten von Partitionssets erhalten.