File: gdbm.info, Node: Synchronizing the Database, Next: Crash recovery, Prev: Enabling crash tolerance, Up: Crash Tolerance 17.3 Synchronizing the Database =============================== When your application knows that the state of the database is consistent (i.e., all relevant application-level invariants hold), you may call 'gdbm_sync'. For example, if your application manages bank accounts, transferring money from one account to another should maintain the invariant that the sum of the two accounts is the same before and after the transfer: It is correct to decrement account 'A' by $7, increment account 'B' by $7, and then call 'gdbm_sync'. However it is _not_ correct to call 'gdbm_sync' _between_ the decrement of 'A' and the increment of 'B', because a crash immediately after that call would destroy money. The general rule is simple, sensible, and memorable: Call 'gdbm_sync' only when the database is in a state from which you are willing and able to recover following a crash. (If you think about it you'll realize that there's never any other moment when you'd really want to call 'gdbm_sync', regardless of whether crash-tolerance is enabled. Why on earth would you push the state of an inconsistent unrecoverable database down to durable media?).