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

Kann ich die Verteilungsmethode für eine vorhandene Citus-Tabelle ändern?

Das ist eine gute Frage. Derzeit bietet Citus keine direkte Möglichkeit, den Partitionstyp vorhandener Daten zu ändern.

Bei der Bereichspartitionierung werden Datensätze gemäß ihrem Partitionsspaltenwert und den Min/Max-Werten der Shards in Shards platziert. Wenn sich ein Datensatz x in Shard y befindet, bedeutet dies y.minvalue <= x.partition_column <= y.maxvalue .

Bei der Hash-Partitionierung wird die Partitionsspalte gehasht und Datensätze werden gemäß diesem Hash-Wert weitergeleitet. Daher sehen Sie Min/Max-Werte in pg_dist_shard sind die Grenzwerte für das Ergebnis der Hash-Funktion. In diesem Fall y.minvalue <= hash(x.partition_column) <= y.maxvalue .

Daher würden die von Ihnen erwähnten Änderungen zu einer falschen Verteilung führen. Um von einer Range-Partition auf eine Hash-Partition umzustellen, sollten die Daten neu verteilt werden. Dazu schlage ich vor, die Daten in eine leere Hash-partitionierte Tabelle neu zu laden.

Weitere Informationen finden Sie unter Arbeiten mit verteilten Tabellen und Hash-Verteilung Abschnitten der Citus-Dokumentation.