MySQLからCitusクラスタへの移行中に、私はrange
配布方法を使用しました。移行は完了しましたが、今は配布方法をhash
に変更したいと思います。既存のCitusテーブルの配信方法を変更することはできますか?
すでにデータが入っている既存のテーブルについて、配信方法をrange
からhash
に変更する方法はありますか?
私は、次の手順を思い付いたが、それは有効なのですかわからない:
pg_dist_shard
テーブルのminvalue
とmaxvalue
列
- 更新
r
からh
COMMIT;
pg_dist_partition
テーブルの
shardテーブルを同じminvalue/maxvalueに更新すると、 'hash(x.partition_column)'が各シャードに当たってプランナが各シャードにクエリをルーティングするので、すべてがうまく動作することを確認できますか? –
データをリロードすることはできません。数日かかるでしょう...私は、計画者がcitusメタデータをどのように使用しているかについてのDOCを見てうれしく思います。 –
各シャードの最小値をINT_MINに、最大値をINT_MAXに設定すると良いでしょう。これは、SELECTクエリでは動作しますが、シャードプルーニングが行われないため、処理が遅くなります。ただし、問合せの変更(INSERT、UPDATE、DELETE)は、問合せごとに1つのヒットを想定しているため動作しません。 このソリューションは、単にCitusを動作させることで肯定的ですが、パフォーマンスの比較や制作のためには、データをゼロからロードすることを強くお勧めします。 –