避免让读者感到饥饿

时间:2020-02-19 18:01:41

标签: c sqlite

我有两个共享的sqlite数据库进程,每个进程都有自己的数据库连接。一个进程以高速率写入数据库,而一个进程从数据库中读取。我关心的是如何避免“读者饥饿”的问题,因为作者会以很高的速度访问数据库,从而为读者锁定数据库。

我正在使用sqlite3_busy_timeout,因此读者会等待数据库是否被锁定,但是从sqlite3_busy_timeout的描述中我了解到,繁忙的处理程序只是多次重试而休眠。如果编写者在那时试图锁定数据库,则所有重试都不会成功。

sqlite file locking documentation描述了一个相反的问题:“作家饥饿”和sqlite版本3中的缓解措施,但是我找不到对相反问题“读者饥饿”的任何引用。有什么最佳实践可以避免此类问题?

1 个答案:

答案 0 :(得分:1)

将数据库放入WAL mode

WAL提供更多的并发性,因为读者不会阻止作者,而作家也不会阻止读者。读写可以同时进行。

相关问题