同期コミット¶
Parameter Type: ブール
Default Value: true
Range: {true|false}
Minimum Scope of Effect: セッションごと
When Value Changes Take Effect: 即時
Required Authorization to Activate: セッションユーザー
コマンドがクライアントに success の指示を返す前に、トランザクションのコミットがWALレコードがディスクに書き込まれるのを待つかどうかを指定します。デフォルトの安全な設定はオンです。オフの場合、成功がクライアントに報告されてから、トランザクションがサーバークラッシュに対して安全であることが実際に保証されるまでに遅延が発生する可能性があります。(最大遅延は wal_writer_delay の3倍です。)
fsync とは異なり、このパラメーターをオフに設定しても、データベースの不整合のリスクは発生しません:オペレーティングシステムまたはデータベースのクラッシュにより、コミットされたとされる最近のトランザクションが失われる可能性がありますが、データベースの状態はそれらのトランザクションとまったく同じになりますきれいに中止されました。
そのため、トランザクションの耐久性に関する正確な確実性よりもパフォーマンスが重要な場合、 synchronous_commit をオフにすることは有用な代替手段となります。詳細については、PostgreSQLCoreDocumentation のセクション Asynchronous Commit を参照してください。
このパラメーターはいつでも変更できます。1つのトランザクションの動作は、コミット時に有効な設定によって決まります。したがって、一部のトランザクションを同期的にコミットし、他のトランザクションを非同期的にコミットすることが可能であり、便利です。たとえば、デフォルトが反対の場合に単一のマルチステートメントトランザクションを非同期的にコミットするには、トランザクション内で SET LOCAL synchronous_commit TO OFF を発行します。