DELAYED_DURABILITY <N>
DELAYED_DURABILITY <N> (default 0) controls whether or not to use a modified log syncing strategy.
With delayed durability enabled transaction logs are no longer sync'd to persisted storage on each commit (or other internal log buffer flush events) and instead, transaction log data is allowed to be written to the filesystem cache, and a background thread then periodically and consistently syncs transaction log contents to disk.
By allowing committed transaction entries to be written to filesystem cache and deferring the file flush can result in a very large performance gain in many cases. However, there is a trade off as a window of potential data loss vulnerability is then introduced. The period of time that transaction log contents are present in volatile filesystem cache before the flush could mean transactions already reported to the application as committed, in rare cases, might not make it to persisted storage.
With many modern storage devices there is a limited presumption that available capacitance on the system and storage device hardware that data is usually persisted even in a power outage situation, though this is not guaranteed. Thus alternate recovery strategies should be considered.
One strategy to coordinate the known state of committed database transactions with a known application state can be achieved with restore points. Restore points can be triggered by an application to create a known point in time where the application and the database are in sync. A restore point creates a special database transaction log checkpoint that can be later referenced by the application as a known good start point.
With delayed durability enabled, it is recommended to consider the use of restore points for a robust recoverable solution.
SUPPRESS_LOG_FLUSH |
YES |
(no idle flush of transaction files) |
SUPPRESS_LOG_SYNC |
YES |
|
IDLE_TRANFLUSH |
-1 |
|
COMMIT_DELAY |
-1 |
(no commit delay) |
FORCE_LOGIDX |
ON |
(all transaction indices use ctLOGIDX) |
COMPATIBILITY LOG_WRITETHRU |
Disabled |
|
Note: If the configuration file has one or more of these configuration entries set inconsistently after the DELAYED_DURABILITY entry, the server logs a message to CTSTATUS.FCS and continues to start, disabling any incompatible options after processing the configuration file.
Warning
When DELAYED_DURABILITY is enabled, recently committed transactions could be lost if FairCom Server terminates abnormally. For automatic recovery to succeed after FairCom Server terminates abnormally, either of the following should be considered.
or