Могу ли я читать из базы данных SQLite во время записи в нее на iPhone?
-
19-09-2019 - |
Вопрос
Можно ли читать из базы данных SQLite во время ее записи?
Я знаю, что доступ блокируется для записи, когда он записывается, но то же ли это для чтения?
Решение 2
После некоторого чтения и просмотра кода FMDB я обнаружил, что неправильно использовал возвращаемые значения SQLITE_BUSY и SQLITE_LOCKED.
Согласно коду FMDB, следует выполнять цикл для ограниченного числа повторных попыток, ожидая в течение короткого времени около пятнадцати.
Итак, я реализовал это в своем коде, и, кажется, все работает нормально.
Другие советы
Это немного запутанно, но посмотрите на Документация по блокировке файлов и параллелизму для SQLite.Это звучит так, как будто база данных находится в exclusive
заблокированный режим - это единственный раз, когда чтение запрещено.К тому же разблокированный, когда база данных даже не открыта.
Я не уверен в этом на 100%, но это то, что я подумай это означает.
Да, хотя необходимо учитывать все соответствующие проблемы с многопоточностью.Обычно я открываю несколько дескрипторов для одного и того же файла БД с помощью sqlite3_open_v2().