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.