Determines when committed transactions are to be flushed to storage after a commit call. If no calls to commit are made by the UltraLite application, no flush can occur.
COMMIT_FLUSH={ immediate | grouped | on_checkpoint }
immediate Committed transactions are flushed to storage immediately upon a commit call before the commit operation completes.
grouped Committed transactions are flushed to storage on a commit call, but only after a threshold you configure has been reached. You can configure either a transaction count threshold with the commit_flush_count database option or a time-based threshold with the commit_flush_timeout database option.
If set, both the commit_flush_count and the commit_flush_timeout options act as possible triggers for the commit flush; the first threshold that is met triggers the flush. When the flush occurs, UltraLite sets the counter and the timer back to 0. Then, both the counter and timer are monitored, until one of these thresholds is subsequently reached.on_checkpoint Committed transactions are flushed to storage on a checkpoint operation. You must checkpoint with any of the following:
The CHECKPOINT statement. APIs that do not have a checkpoint method must use this SQL statement.
The ULCheckpoint function for UltraLite embedded SQL.
The Checkpoint method on a connection object in a C++ component.
immediate (UltraLite default behavior)
This parameter defines which transactions are recovered following a hardware failure or crash. You may group logical auto-commit operations as a single recovery point.
By grouping these operations, you can improve UltraLite performance—but at the expense of data recoverablility. There is a slight chance that a transaction may be lost—even though it has been committed—if a hardware failure or crash occurs after a commit, but before the transaction is flushed to storage.