У меня есть два процесса с общей базой данных sqlite, каждый из которых имеет собственное подключение к базе данных. один процесс выполняет запись в базу данных с высокой скоростью, а один процесс выполняет чтение из базы данных. Меня интересует, как избежать проблемы «голодания читателя», так как писатель обращается к базе данных с высокой скоростью, блокируя таким образом базу данных для читателя.
Я использую sqlite3_busy_timeout
, поэтому читатель ожидает, если база данных заблокирована, но из описания sqlite3_busy_timeout
я понимаю, что обработчик занятости просто несколько раз спит с повторными попытками. если писатель хочет заблокировать базу данных в то время, ни одна из повторных попыток не будет выполнена.
sqlite file locking documentation
описывает противоположную проблему: «голодание писателя» и меры по уменьшению в версии sqlite 3. но я не смог найти ссылку на противоположную проблему «голодание читателя». Есть ли лучшие практики, чтобы избежать такой проблемы?