sql >> Database >  >> RDS >> PostgreSQL

Waarom kan ik geen partitietabel maken?

"Declaratieve tabelpartitionering", dat wil zeggen partitionering als een eersteklas functie van de DBMS met zijn eigen syntaxis, was toegevoegd in PostgreSQL 10 .

In eerdere versies kunt u hetzelfde effect bereiken met wat meer moeite door gebruik te maken van "tabelovererving". Er is een pagina in de handleiding waarin wordt beschreven hoe u dit handmatig kunt doen , samengevat als:

  1. Maak de "master"-tabel, waarvan alle partities zullen erven.
  2. Maak meerdere "kind"-tabellen die elk van de hoofdtabel erven.
  3. Voeg tabelbeperkingen toe aan de partitietabellen om de toegestane sleutelwaarden in elke partitie te definiëren.
  4. Maak voor elke partitie een index op de sleutelkolom(men), evenals eventuele andere indexen die u misschien wilt.
  5. Definieer optioneel een trigger of regel om gegevens die in de hoofdtabel zijn ingevoegd om te leiden naar de juiste partitie.
  6. Zorg ervoor dat de configuratieparameter constraint_exclusion niet is uitgeschakeld in postgresql.conf. Als dit het geval is, worden zoekopdrachten niet naar wens geoptimaliseerd.

Om dit gemakkelijker te maken, kunt u, als u niet kunt upgraden naar versie 10, een extensie gebruiken zoals pg_partman die u extra functies geeft voor het instellen en beheren van partitiesets.



  1. Postgresql -bash:psql:opdracht niet gevonden

  2. Som tot drempelwaarde bereikt en reset vervolgens de teller

  3. Magento:kan niet inloggen op admin

  4. Batch-invoeging met tabel met veel kolommen met Anorm