Могу ли я читать из базы данных SQLite во время записи в нее на iPhone?

StackOverflow https://stackoverflow.com/questions/1305360

  •  19-09-2019
  •  | 
  •  

Вопрос

Можно ли читать из базы данных SQLite во время ее записи?

Я знаю, что доступ блокируется для записи, когда он записывается, но то же ли это для чтения?

Это было полезно?

Решение 2

После некоторого чтения и просмотра кода FMDB я обнаружил, что неправильно использовал возвращаемые значения SQLITE_BUSY и SQLITE_LOCKED.

Согласно коду FMDB, следует выполнять цикл для ограниченного числа повторных попыток, ожидая в течение короткого времени около пятнадцати.

Итак, я реализовал это в своем коде, и, кажется, все работает нормально.

Другие советы

Это немного запутанно, но посмотрите на Документация по блокировке файлов и параллелизму для SQLite.Это звучит так, как будто база данных находится в exclusive заблокированный режим - это единственный раз, когда чтение запрещено.К тому же разблокированный, когда база данных даже не открыта.

Я не уверен в этом на 100%, но это то, что я подумай это означает.

Да, хотя необходимо учитывать все соответствующие проблемы с многопоточностью.Обычно я открываю несколько дескрипторов для одного и того же файла БД с помощью sqlite3_open_v2().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top