【发布时间】:2018-05-03 20:36:00
【问题描述】:
我在 SQLite 数据库中有大约 200 个表,其中包含数亿到数百万行。 OLTP 应用程序的许多并发进程都会查询这些表。
每个表都需要偶尔通过完全刷新来更新——删除所有行,然后插入不同的行,所有这些都在一个事务中。对于最大的表,这几乎需要一分钟,但对于一个表,这种刷新每天只发生几次。
我需要确保读者不需要等待刷新完成——应该使用旧版本的表数据,直到事务完成,然后使用新版本。如果需要,任何等待都应该以毫秒而不是秒或分钟为单位。
这可以实现吗,即避免任何数据库锁或表锁阻塞读者?我不关心作家,他们可以等待和序列化。
这是一个带有 pysqlite 的 Python 应用程序。
【问题讨论】: