SQLite:读者不等待作家

SQLite: readers not waiting for writers

我在 SQLite 数据库中有大约 200 tables,有数百到数百万行。这些 table 由 OLTP 应用程序的许多并发进程查询。

每个 table 需要偶尔通过完全刷新来更新——删除所有行然后插入不同的行,所有这些都在一个事务中。对于最大的 table 秒,这需要将近一分钟,但对于 table.

,这种刷新每天只发生几次

我需要确保读者不需要等待刷新完成 -- 应该使用旧版本的 table 数据,直到交易完成,然后使用新版本。如果需要,任何等待都应该以毫秒而不是秒或分钟为单位。

这能否实现,即避免任何数据库锁或 table 锁阻塞读者?我不关心作家,他们可以等待连载

这是一个带有 pysqlite 的 Python 应用程序。

使用WAL mode:

WAL provides more concurrency as readers do not block writers and a writer does not block readers. Reading and writing can proceed concurrently.