Посмотрите на SQLite pragma-s.http://www.sqlite.org/pragma.html
PRAGMA Lock_mode;
PRAGMA Lock_mode = NORMAL |EXCLUSIVE
Эта прагма устанавливает или запрашивает режим блокировки подключения к базе данных.Режим блокировки - либо НОРМАЛЬНЫЙ, либо ИСКЛЮЧИТЕЛЬНЫЙ.
В режиме блокировки НОРМАЛЬНОЕ (по умолчанию) соединение с базой данных разблокирует файл базы данных при завершении каждой транзакции чтения или записи.Когда режим блокировки установлен в значение EXCLUSIVE, соединение с базой данных никогда не снимает блокировки файлов.При первом чтении базы данных в режиме EXCLUSIVE получается и удерживается общая блокировка.При первой записи в базу данных получается и удерживается эксклюзивная блокировка.
Блокировки базы данных, полученные с помощью соединения в режиме EXCLUSIVE, могут быть сняты либо путем закрытия соединения с базой данных, либо путем установки режима блокировки обратно наНОРМАЛЬНО используя эту прагму и затем обращаясь к файлу базы данных (для чтения или записи).Просто установить режим блокировки на NORMAL недостаточно - блокировки не снимаются до следующего обращения к файлу базы данных.
Существует две причины установить режим блокировки на EXCLUSIVE.Во-первых, если приложение действительно хочет запретить другим процессам доступ к файлу базы данных.Другое - то, что небольшое количество операций файловой системы сохраняется оптимизациями, включенными в этом режиме.Это может быть важно во встроенных средах.
Когда прагма lock_mode указывает конкретную базу данных, например:
PRAGMA main.locking_mode = EXCLUSIVE;Тогда режим блокировки применяется только к указанной базе данных.Если спецификатор имени базы данных не предшествует ключевому слову «lock_mode», то режим блокировки применяется ко всем базам данных, включая любые новые базы данных, добавленные последующими командами ATTACH.
База данных «temp» (в которой таблицы и индексы TEMPсохраненные) и в памяти базы данных всегда использует эксклюзивный режим блокировки.Режим блокировки баз данных temp и in-memory изменить нельзя.Все остальные базы данных используют нормальный режим блокировки по умолчанию и подвержены этой прагме.
PRAGMA синхронный;
PRAGMA синхронный = 0 |ВЫКЛ |1 |НОРМАЛЬНЫЙ |2 |FULL;
Запросить или изменить настройку «синхронного» флага.Первая форма (запрос) вернет синхронную установку в виде целого числа.Если для параметра synchronous задано значение FULL (2), ядро базы данных SQLite остановится в критические моменты, чтобы убедиться, что данные действительно были записаны на поверхность диска, прежде чем продолжить.Это гарантирует, что в случае сбоя операционной системы или сбоя питания база данных будет повреждена после перезагрузки.Полный синхронный режим очень безопасен, но он также медленнее.Когда синхронным является NORMAL (1), ядро базы данных SQLite будет по-прежнему останавливаться в самые критические моменты, но реже, чем в режиме FULL.Существует очень малая (хотя и ненулевая) вероятность того, что сбой питания в самый неподходящий момент может повредить базу данных в режиме NORMAL.Но на практике вы, скорее всего, столкнетесь с катастрофическим отказом диска или другим неисправимым отказом оборудования.При синхронном ВЫКЛ (0) SQLite продолжает работу без остановки, как только передает данные операционной системе.В случае сбоя приложения, работающего под управлением SQLite, данные будут в безопасности, но база данных может быть повреждена, если произойдет сбой операционной системы или компьютер потеряет питание до того, как эти данные будут записаны на поверхность диска.С другой стороны, при синхронном ВЫКЛ некоторые операции выполняются в 50 и более раз быстрее.
По умолчанию установлено синхронное = FULL.