SQLite (с Wal) не делает `fsync` на каждом коммите в условиях по умолчанию

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 #на #каждом #коммите #условиях #по #умолчанию

Ещё по этой теме

Read more:  Сотрудничество США и Австралии по суше, воздуху, морю и промышленным базам — главные темы 40-й конференции AUSMIN > Военное министерство США > Новости Министерства обороны

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.