別のプロセスによって生成され、PostgreSQL バージョン 8.4 に保存されているデータを表示する Web アプリがあります。バックエンドはかなり継続的に書き込みを行っていますが、Web アプリのビューの大部分は読み取り専用の SELECT クエリしか実行していません。
New Relic Python エージェントによると、私のビューの処理時間の 30% は COMMIT が完了するのを待つために費やされており、データを変更していない場合でも、多くの SELECT クエリを発行したビューでは特に問題があります。
読み取り専用だったトランザクションは、コミット フェーズで行う作業がほとんどないと予想していました。これらの読み取り専用クエリの COMMIT 中に Postgres は何をしているのですか?
ビューからレイテンシを隠すためにこれらのトランザクションをオフにできることはわかってsynchronous_commit
います。また、読み取り専用トランザクションの耐久性については気にしませんが、なぜそれが必要なのかがわかりません。そうすることで、より深い設定ミスが隠される可能性があります。