代码之家  ›  专栏  ›  技术社区  ›  dicroce

让SQLITE\u在只读数据库上忙是正常的吗?

  •  2
  • dicroce  · 技术社区  · 16 年前

    我有2个进程:1是写入sqlite数据库,1是从同一个数据库读取。有时,我的选择会很忙。这正常吗?我是否可以通过某种方式打开数据库,使其阻塞,直到完成查询(我在open调用上尝试了FULLMUTEX选项,但似乎没有效果)。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Daniel Stutzbach Edward Leno    16 年前

    当SQLite需要写时,它会锁定整个数据库,这样其他线程/进程就不能读写它了。这就是为什么你的另一个进程变得很忙。因此,如果需要多个线程/进程同时使用数据库,SQLite就不是那么好了。如果你只有两个过程,你可能会侥幸逃脱。

    至于问题的第二部分,您可以告诉SQLite使用 sqlite3_busy_timeout

    sqlite3_busy_timeout(db, 100);  /* Retry for up to 100 ms */