что происходит при прерывании записи в базу данных sqlite3? - PullRequest
1 голос
/ 28 июня 2010

Вопрос: Когда происходит фактическая запись в файл базы данных sqlite3 и что происходит, если он прерывается?


Информация:

У меня есть эта программа на python, которую яВ течение нескольких недель мы работали над использованием sqlite3 для хранения больших объемов данных, полученных при симуляции.Но есть две ситуации, о которых я беспокоюсь.

В последнее время у нас было много гроз, и это несколько раз сбивало питание, также я обновляю файл, который записывает в БД с некоторой частотой, и для этого мне нужно убитьтекущий бегущий поток симуляции.в обоих случаях, особенно в первом, я беспокоюсь о том, что произойдет, когда этот поток прерывается.Что, если мне случится прервать его или потерять питание во время записи из файла журнала в базу данных?информация просто не попадет туда?это доберется, но развращено?Повредит ли он весь файл базы данных sqlite3?

По сути, я хочу знать, когда данные записываются в файл, а не только в файл журнала.и если этот процесс записи не заканчивается по какой-либо причине, что происходит с журналом и файлом базы данных?

~ n

1 Ответ

4 голосов
/ 28 июня 2010

SQLite использует атомарные коммиты , поэтому либо все, либо ничего не фиксируется.

Если вы обеспокоены тем, что база данных оставлена ​​в недопустимом состоянии, вам нужно убедиться, что вы заключили все «переходное» состояние в блок BEGIN TRANSACTION ... COMMIT.

Мелкие детали записи в файлы журнала и т. Д. (В том числе из-за сбоев) содержатся в документе "Блокировка файлов и параллелизм в SQLite версии 3" .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...