【发布时间】:2020-11-26 09:39:13
【问题描述】:
我目前有两个不同的进程,一个进程写入数据库,另一个进程读取并更新数据库中由第一个进程插入的记录。每次我尝试同时启动两个进程时,数据库都会被锁定,这是有道理的。由于同时读写。我遇到了 WAL,但还没有遇到任何关于如何在 c++ 代码中启用 WAL 的示例。任何帮助,将不胜感激。谢谢。
【问题讨论】:
-
SQLite 是否允许来自不同进程的并发访问?我认为只能在一个进程中执行此操作。如果您需要更强大的数据库,请考虑使用 Postgres 或明确设计用于并发、多进程访问的数据库。
-
@tadman:看起来 SQLite 可以使用共享内存。 Postgres 可以跨不同的计算机工作。这仍然是 SQLite 的问题。
-
@MSalters 我相信使用预写日志记录可以实现并发性。还是我弄错了?
-
我不确定访问同一数据库的进程之间可用的并发设施。以我的经验,SQLite 在一个进程中的表现非常好,但在争用同一资源时往往表现不佳。