Hacker News Digest

24 августа 2025 г. в 15:40 • avi.im • ⭐ 97 • 💬 70

OriginalHN

#sqlite#wal#fsync#database#acid#macos#litestream

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-файла.