Postgres hat seit der Version 10.x die Partitionierung auf eine neue Stufe gehoben. Datensätze werden jetzt ohne den zusätzlichem Einsatz von Triggern auf die richtigen Tabellen-Partitionen verteilt.
Schauen wir uns ein Beispiel an:
Hinweis die Endgrenzen sind in der Range NICHT enthalten (also <'2015-01-01' !!!)
Wir tragen mal 1000 Datensätze ein ...
Lesen (komplette Tabelle):
Wir lesen nur eine Partition:
Nun wollen wir auf einer Partition einen Index erstellen: Defaultname ist <table_name_col_name>_idx
Nun können wir eine Partition löschen:
Oder eine Partition aushängen:
Partition wieder einhängen (mit gleicher Zeitspanne):
Partition wieder einhängen (mit anderer Zeitspanne): Das würde einem SPLIT PARTITION entsprechen, den es derzeit bei Postgres nicht gibt!
Partition aushängen:
Daten aus dem zweiten Halbjahr in eine Tabelle verschieben:
Die beiden (neu/alt) Partitionen wieder einhängen:
Wir testen das Ganze:
Na, das Ganze können wir über eine Funktion auch vereinfachen:
Nachträgliches Hinzufügen einer normalen Tabelle als Partition:
Derzeitige Beschränkungen (01.08.2017):