タイプ: integer
デフォルト: 0
分: 0
最大: 100000
コンテキスト: superuser
再起動: false

commit_delayを設定することにより、WALフラッシュを開始する前の時間遅延が追加されます。このことにより、もし追加のトランザクションが与えられた時間間隔内でコミットが可能になるほどシステム負荷が充分に高い場合、一回のWALフラッシュでより多くの数のトランザクションをコミットできるようになり、コミット群のスループットを改善できます。とは言っても、それぞれのWALフラッシュに対して最大commit_delayの待ち時間の増加をきたします。コミットの準備が完了したトランザクションが他に存在しない場合、遅延は無駄になるため、遅延はフラッシュが開始されようとしている時点で少なくともcommit_siblingsだけのトランザクションが活動している場合にだけ機能します。同様に、fsyncが無効の場合も遅延は機能しません。この値が単位なしで指定された場合は、マイクロ秒単位であるとみなします。デフォルトのcommit_delayはゼロ(遅延無し)です。この設定はスーパーユーザのみ変更可能です。

9.3より前のPostgreSQLでは、commit_delayの振る舞いは異なっており、あまり効果がありませんでした。 全てのWALフラッシュではなく、コミットだけに影響していました。また、そしてWALフラッシュが早めに完了しても設定された遅延分待機していました。 PostgreSQL 9.3以降では、フラッシュの準備が整った最初のプロセスが設定値分待機し、後続のプロセスは最初のプロセスがフラッシュ操作を完了するまでの間だけ待機をします。

推奨事項 [EN]

A primitive form of group commit without asynchronicity. Performance testing of this is very mixed; only set to non-zero if you have time to test the specific performance impact on your workload. Reasonable values are 200 to 1000.

件のコメント