SQLite (with WAL) doesn't do `fsync` on each commit under default settings
SQLite в режиме WAL по умолчанию не вызывает fsync после каждого COMMIT.
- Параметр
PRAGMA synchronous=NORMAL(значение по умолчанию) не гарантирует сохранность транзакции при внезапном отключении питания. - В этом режиме
fsyncвыполняется лишь:
– перед контрольной точкой WAL;
– после завершения контрольной точки;
– при повторном использовании WAL-файла. - Для жёсткой гарантии сохранности нужно:
Тогда после каждогоPRAGMA synchronous = FULL;COMMITбудет вызыватьсяfsyncWAL-файла.