2015-07-08 3 views
0
int iReturn = sqlite3_wal_checkpoint_v2(m_poDB, NULL, SQLITE_CHECKPOINT_FULL, &iSizeOfWalLog, &iNumOfCheckpointedFrames); 

возвращается с iReturn = 5 (SQLITE_BUSY). Писатель время от времени просыпается, добавляет или удаляет несколько строк в базе данных, выполняет контрольную точку и снова переходит в режим сна.Не удалось выполнить контрольную точку

Вопрос 1: Как это возможно, если я использую режим WAL и имею 4 считывателя и один писатель?

Вопрос 2: В сообщениях журнала я видел, что контрольная точка часто работает, но только иногда сообщает SQLITE_BUSY. Должен ли я быть обеспокоен, если он работает иногда, но не всегда? Может ли это повредить базу данных?

Вопрос 3: Должен ли я использовать sqlite3_wal_checkpoint_v2 или SQLITE_CHECKPOINT_FULL?

ответ

0

Полная контрольная точка требует, чтобы одновременно не было читателей или писателей.

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

Смежные вопросы