Determines when the database server returns control to an application following a COMMIT.
|PUBLIC role||For current user||For other users|
|Allowed to set permanently?||Yes, with SET ANY PUBLIC OPTION||Yes||Yes, with SET ANY PUBLIC OPTION|
|Allowed to set temporarily?||Yes, with SET ANY PUBLIC OPTION||Yes (current connection only)||No|
Off corresponds to ISO COMMIT behavior.
When set to On, the database server replies to a COMMIT statement immediately instead of waiting until the transaction log entry for the COMMIT has been written to disk. When set to Off, the application must wait until the COMMIT is written to disk.
When this option is On, the log is written to disk when the log page is full or according to the delayed_commit_timeout option setting, whichever is first. There is a slight chance that a transaction may be lost even though committed if a system failure occurs after the database server replies to a COMMIT, but before the page is written to disk. Setting delayed_commits to On, and the delayed_commit_timeout option to a high value, promotes a quick response time at the slight risk of losing a committed transaction during recovery.
If both cooperative_commits and delayed_commits are set to On, and if the cooperative_commit_timeout interval passes without the pages getting written, the application is resumed (as if the commit had worked), and the remaining interval (delayed_commit_timeout - cooperative_commit_timeout) is used as a delayed_commits interval after which the pages are written, even if they are not full.