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
будет вызыватьсяfsync
WAL-файла.