2016-12-10 6 views
9

遅いクエリのログを有効にすると、本番データベースで完了するまでに多くの時間がかかります(COMMIT)。調べると、これらは一般的に単純なトランザクションです:行を取り出し、UPDATE行、COMMIT。これらの特定のトランザクションのSELECTUPDATEは、遅いとして記録されていません。これらの遅いコミットの理由を理解するために、私たちができること、または使用できるツールがありますか?私たちはSSD上で動作しており、スレーブにストリーミングしています。遅いPostgreSQL 9.3 COMMITのデバッグ

+2

レプリカへのストリーミングは大きな違いをもたらす可能性があります。同期レプリケーションは有効になっていますか?もしそうなら、それは容易に遅延コミットを引き起こす可能性があります。同期レプリケーションを一時的に無効にすることで、これが原因であることを確認できます( 'synchronous_standby_names = '''を設定するか 'synchronous_commit = 'local''を設定してください) –

+0

これらの設定はどちらもデフォルトに設定されています。すでに効​​果的に「ローカル」になっています。 –

+1

あなたの書き込みが競合しているかどうかを調べるには 'log_lock_waits = true'を試してください。 – teppic

答えて

0

Postgresコミットは同期です。これは、WALの書き込みが完了するのを待ってから次のWAL書き込みに移ることを意味します。設定ファイルのWAL設定を調整して調整することができます。

設定ファイル内のsynchronous_commitを使用して、コミットレベルをセッション/ユーザーレベルまたはデータベースワイドで非同期に設定できます。

データベース側。

テーブルを掃除して統計情報を更新してください。これは、あなたの実行中の更新以来、死んだタプルを取り除きます。多くのものがあります。

VACUUM ANALYZE 
関連する問題