【问题标题】:SQLite: readers not waiting for writersSQLite:读者不等待作者
【发布时间】:2018-05-03 20:36:00
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: sqlite locking pysqlite


    【解决方案1】:

    使用WAL mode:

    WAL 提供了更多的并发性,因为读取器不会阻塞写入器,写入器不会阻塞读取器。读写可以同时进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      相关资源
      最近更新 更多