web-dev-qa-db-ja.com

MVCCのUPDATE最適化にフラグを立てます

1日に複数回フラグを変更する200k行のテーブルがあります。私が正しく理解していれば、postgresのUPDATEはディスクのDELETE + INSERTです。

これが私たちのユースケースにとって非常に非効率的であるかどうか疑問に思います。各タプルのサイズが大きい場合はどうなりますか?タプル全体が再度書き込まれますか?

これらのステータスフラグを別のテーブルに移動して、無駄なI/Oを減らす小さなタプルのみを書き直すことを考えていました。これは正しいアプローチですか、それとも間違った方向に進んでいますか?

1
Luca Looz

コミュニティウィキの回答

あなたは基本的に正しいです。

また、一定量の空き領域を使用して個別のテーブルを定義する場合にも役立ちます( fillfactor を参照) )PostgreSQLがヒープのみのタプルの更新を実行できるようにします。

HOT UPDATE(ヒープのみのタプル)を使用してUPDATEクエリの速度を上げる AnveshPatelを参照してください。

0
user126897