sql >> Database >  >> RDS >> PostgreSQL

Kan ik de distributiemethode op een bestaande Citus-tabel wijzigen?

Dat is een goede vraag. Momenteel biedt Citus geen directe manier om het partitietype van bestaande gegevens te wijzigen.

Bij bereikpartitionering worden records in shards geplaatst op basis van hun partitiekolomwaarde en shard min/max-waarden. Als een record x zich in shard y bevindt, betekent dit y.minvalue <= x.partition_column <= y.maxvalue .

Bij hash-partitionering wordt de partitiekolom gehasht en worden records gerouteerd volgens deze gehashte waarde. Daarom zijn min/max-waarden die u ziet in pg_dist_shard zijn de grenswaarden voor het resultaat van de hashfunctie. In dit geval y.minvalue <= hash(x.partition_column) <= y.maxvalue .

Daarom zou het uitvoeren van de wijzigingen die u hebt genoemd, eindigen met een onjuiste distributie. Om over te schakelen van bereikpartitie naar hashpartitie, moeten de gegevens opnieuw worden gedistribueerd. Om dat te doen, raad ik aan de gegevens opnieuw te laden naar een lege hash-gepartitioneerde tabel.

Voor meer informatie kunt u verwijzen naar Werken met gedistribueerde tabellen en Hashdistributie secties van Citus-documentatie.




  1. Waarom is het mogelijk om numerieke tekenreekswaarden te gebruiken om integer-velden in MySQL in te stellen, en is dit een functie die altijd zal werken?

  2. Hoe UNION werkt in PostgreSQL

  3. MySQL:hoe krijg ik alleen het gemiddelde van positieve waarden?

  4. ...mysql2/mysql2.so:[BUG] Segmentatiefout ruby ​​2.0.0p247