SQLite:读者不等待作家

时间:2018-05-03 20:36:01

标签: sqlite locking pysqlite

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

需要通过完全刷新偶尔更新每个表 - 删除所有行,然后在事务中插入不同的行。对于最大的表,这需要将近一分钟,但这样的刷新每天只会发生几次表。

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

是否可以实现,即避免任何数据库锁或表锁阻止读者?我不关心作家,他们可以等待和序列化。

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

1 个答案:

答案 0 :(得分:1)

使用WAL mode

  

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