1

我有两个过程:

  1. 每秒写入两个表(ish)
  2. 定期从所述表中读取

我知道使用 SQLite,任何写入都会锁定整个数据库,因此有时第二个进程可能会因数据库锁定而失败。

您有什么建议可以完全消除这两个进程接触同一个数据库的需要吗?例如,我可以将正在写入的数据库中的数据自动传输到第二个只读数据库吗?

谢谢 :)

4

2 回答 2

2

您可以在第二个进程中配置与数据库的连接,以在遇到繁忙的数据库时等待一段时间,定期唤醒以检查空闲数据库,然后再放弃。

sqlite3_busy_timeout(sqlite3*, int ms);

http://www.sqlite.org/c3ref/busy_timeout.html

于 2010-02-25T03:16:53.083 回答
0

我可以建议阅读有关 SQLite线程安全的常见问题解答吗?

线程是邪恶的。避开他们。

SQLite 是线程安全的。我们做出这个让步是因为许多用户选择忽略上一段中给出的建议。但是为了线程安全,SQLite 必须在编译时将 SQLITE_THREADSAFE 预处理器宏设置为 1。

于 2010-02-25T02:41:08.123 回答