SQLite имеет режим WAL (по умолчанию режим журнала), но вы, вероятно, используете его, если хотите более высокую пропускную способность записи. У SQLite также есть прагма под названием synchronous Что настраивает как fsync называется. По умолчанию есть NORMALПолем Это то, что говорят документы:
[..] Но Wal Mode теряет долговечность. Транзакция, совершенная в режиме Wal с
synchronous=NORMALможет отказаться после потери мощности или сбоя системы.
В режиме Wal, когда синхронно
NORMAL (1)Файл WAL синхронизирован перед каждой контрольной точкой, а файл базы данных синхронизируется после каждой завершенной контрольной точки, а заголовок файла WAL синхронизируется, когда файл WAL начинает повторно используется после контрольной точки, но никаких операций синхронизации не происходит во время большинства транзакций.
Если долговечность не является проблемой, то Synchronous = Norral – это обычно все, что нужно в режиме Wal.
Если ты хочешь fsync быть образованным на каждом коммите, используйте FULL:
С
synchronous=FULLВ режиме WAL дополнительная операция синхронизации файла WAL происходит после каждой коммиты транзакции. Дополнительная синхронизация WAL после каждой транзакции помогает гарантировать, что транзакции долговечны в результате потери мощности. Транзакции согласуются с или без дополнительных синхронизации, предоставленныхsynchronous=FULLПолем
https://www.sqlite.org/pragma.html#pragma_synchronous
Кто -то передал мне этот пост SurreAldb жертвует долговечности данных, чтобы показатели выглядели лучше и спросил меня, как работает SQLite.
2025-08-24 15:40:00
1756052762
#SQLite #Wal #не #делает #fsync #на #каждом #коммите #условиях #по #умолчанию
Ещё по этой теме

