sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor kan ikke oprette partitioneringstabel

"Deklarativ tabelpartitionering", det vil sige partitionering som en førsteklasses funktion i DBMS med sin egen syntaks, var tilføjet i PostgreSQL 10 .

I tidligere versioner kan du opnå den samme effekt med lidt mere indsats ved at bruge "bordarv". Der er en side i manualen, der beskriver, hvordan man gør dette manuelt , opsummeret som:

  1. Opret "master"-tabellen, som alle partitionerne vil arve fra.
  2. Opret flere "underordnede" tabeller, som hver arver fra mastertabellen.
  3. Tilføj tabelbegrænsninger til partitionstabellerne for at definere de tilladte nøgleværdier i hver partition.
  4. For hver partition skal du oprette et indeks på nøglekolonnen(e) såvel som andre indekser, du måtte ønske.
  5. Definer eventuelt en trigger eller regel for at omdirigere data indsat i mastertabellen til den relevante partition.
  6. Sørg for, at konfigurationsparameteren constraint_exclusion ikke er deaktiveret i postgresql.conf. Hvis det er det, vil forespørgsler ikke blive optimeret som ønsket.

For at gøre dette lettere, hvis du ikke kan opgradere til version 10, kan du bruge en udvidelse såsom pg_partman som giver dig yderligere funktioner til opsætning og styring af partitionssæt.



  1. php mysql_connect Advarsel deaktiver

  2. Hvordan bruger man billeder i Android SQLite, der er større end begrænsningerne for et CursorWindow?

  3. Udfør en dynamisk krydstabuleringsforespørgsel

  4. Tilføjelse af en ikke-nullbar kolonne til eksisterende tabel mislykkes. Bliver værdiegenskaben ignoreret?