SQLite Forum

Process vs OS level durability (sync=NORMAL, WAL)
Login
[https://www.sqlite.org/pragma.html#pragma_synchronous](https://www.sqlite.org/pragma.html#pragma_synchronous)

> WAL mode is always consistent with synchronous=NORMAL, but **WAL mode does lose durability.** A transaction committed in WAL mode with synchronous=NORMAL **might roll back following a power loss or system crash**. Transactions are durable across application crashes regardless of the synchronous setting or journal mode.


This question is about sync=NORMAL in WAL mode:


Why is it that durability is maintained over process crashes, but not OS crashes?

Where is the OS level state kept?


Does this mean that transactions are only durable after a checkpoint process is completed moving data from the wal file into the db file?

In the above quote, what does "might" mean? Is that a low probability?

Thanks