1日に複数回フラグを変更する200k行のテーブルがあります。私が正しく理解していれば、postgresのUPDATEはディスクのDELETE + INSERTです。
これが私たちのユースケースにとって非常に非効率的であるかどうか疑問に思います。各タプルのサイズが大きい場合はどうなりますか?タプル全体が再度書き込まれますか?
これらのステータスフラグを別のテーブルに移動して、無駄なI/Oを減らす小さなタプルのみを書き直すことを考えていました。これは正しいアプローチですか、それとも間違った方向に進んでいますか?
あなたは基本的に正しいです。
また、一定量の空き領域を使用して個別のテーブルを定義する場合にも役立ちます( fillfactor
を参照) )PostgreSQLがヒープのみのタプルの更新を実行できるようにします。
HOT UPDATE(ヒープのみのタプル)を使用してUPDATEクエリの速度を上げる AnveshPatelを参照してください。