我有两个共享的sqlite数据库进程,每个进程都有自己的数据库连接。一个进程以高速率写入数据库,而一个进程从数据库中读取。我关心的是如何避免“读者饥饿”的问题,因为作者会以很高的速度访问数据库,从而为读者锁定数据库。
我正在使用sqlite3_busy_timeout
,因此读者会等待数据库是否被锁定,但是从sqlite3_busy_timeout
的描述中我了解到,繁忙的处理程序只是多次重试而休眠。如果编写者在那时试图锁定数据库,则所有重试都不会成功。
sqlite file locking documentation
描述了一个相反的问题:“作家饥饿”和sqlite版本3中的缓解措施,但是我找不到对相反问题“读者饥饿”的任何引用。有什么最佳实践可以避免此类问题?