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

Posso modificare il metodo di distribuzione su una tabella Citus esistente?

Questa è una buona domanda. Attualmente, Citus non fornisce un modo diretto per modificare il tipo di partizione dei dati esistenti.

Nel partizionamento dell'intervallo, i record vengono inseriti negli shard in base al valore della colonna della partizione e ai valori min/max dello shard. Se un record x risiede nello shard y, significa y.minvalue <= x.partition_column <= y.maxvalue .

Nel partizionamento hash, la colonna della partizione viene sottoposta a hash e i record vengono instradati in base a questo valore hash. Pertanto, i valori min/max che vedi in pg_dist_shard sono i valori limite per il risultato della funzione hash. In questo caso y.minvalue <= hash(x.partition_column) <= y.maxvalue .

Pertanto, apportare le modifiche che hai menzionato finirebbe con una distribuzione errata. Per passare dalla partizione dell'intervallo alla partizione hash, i dati devono essere ridistribuiti. Per farlo, suggerisco di ricaricare i dati in una tabella vuota con partizioni hash.

Per ulteriori informazioni, puoi fare riferimento a Utilizzo di tabelle distribuite e Distribuzione hash sezioni della documentazione Citus.