SQLite 开发人员开发支持并行写入的 HC-tree 后端

SQLite 项目开发人员已开始测试实验性 HCtree 后端,该后端支持行级锁定并在处理查询时提供高级别的并行化。 新后端旨在提高在必须处理大量并发数据库写入请求的客户端-服务器系统中使用 SQLite 的效率。

SQLite 本身用于存储数据的 b 树结构并不是为这种类型的负载而设计的,这限制了 SQLite 只能写入一个线程。 作为实验,开发人员开始开发一种替代解决方案,使用 HC-tree 结构进行存储,这种结构更适合并行化写入操作。

为了允许多个操作并发运行,HCtree 记录使用事务分区机制,该机制使用页级锁定,类似于 MVCC(多版本并发控制),但使用基于键和键范围而不是页集的事务检查。 读取和写入操作是与数据库快照结合执行的,只有在事务完成后,对其所做的更改才在主数据库中可见。

客户端可以使用三种开放交易操作:

  • “BEGIN”——交易不考虑其他客户端的访问数据。 如果在事务内执行写操作,则只有在执行期间数据库中没有其他写操作时才能提交该事务。
  • “开始并发”-事务收集有关其他客户端访问的信息。 如果在事务内执行写操作,并且自创建快照以来数据库中已提交其他事务,则可以提交该事务。
  • “BEGIN EXCLUSIVE” - 打开一个事务后,它会阻止其他事务的操作,直到它完成。

HCtree 支持主从复制,允许您将事务迁移到另一个数据库并使辅助数据库与主数据库保持同步。 HCtree 还消除了对数据库大小的限制 - HCtree 使用 32 位数据页标识符而不是 48 位数据页标识符,这将最大数据库大小从 16 tebibytes 增加到 1 exbibyte(百万 tebibytes)。 预计带有HCtree后端的SQLite的性能将不低于经典的单线程后端。 支持 HCtree 的 SQLite 客户端将能够访问基于 HC-tree 的数据库和旧版 SQLite 数据库。

来源: opennet.ru

添加评论