PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Posso alterar o método de distribuição em uma tabela Citus existente?


Essa é uma boa pergunta. Atualmente, o Citus não fornece uma maneira direta de alterar o tipo de partição dos dados existentes.

No particionamento de intervalo, os registros são colocados em estilhaços de acordo com o valor da coluna de partição e os valores mínimo/máximo de estilhaço. Se um registro x reside no fragmento y, significa y.minvalue <= x.partition_column <= y.maxvalue .

No particionamento de hash, a coluna de partição é hash e os registros são roteados de acordo com esse valor de hash. Portanto, os valores mín./máx. que você vê em pg_dist_shard são os valores limite para o resultado da função hash. Neste caso y.minvalue <= hash(x.partition_column) <= y.maxvalue .

Portanto, fazer as alterações que você mencionou resultaria em uma distribuição incorreta. Para alternar da partição de intervalo para a partição de hash, os dados devem ser redistribuídos. Para fazer isso, sugiro recarregar os dados em uma tabela particionada por hash vazia.

Para obter mais informações, consulte Trabalhando com tabelas distribuídas e Distribuição de hash seções da Documentação Citus.