在 SQLite 中,他们已经在支持并行写入的 HCTree 后端上工作

SQLite的

是一个符合 ACID 的关系数据库管理系统,包含在一个用 C 编写的相对较小的库中

项目的开发者 SQLite 已经开始测试一个实验性的 HCtree 后端 它支持行级锁定并在查询处理中提供高级别的并行性。

关于他们工作的新后端,有人提到这个 旨在提高在客户端-服务器系统中使用 SQLite 的效率 他们必须处理对数据库的大量并发写入请求。

最初使用的 b-tree 结构 在 SQLite 中存储数据 它们不是为此类负载设计的。,这将 SQLite 限制为仅写入一个流。 作为一项实验,开发人员开始开发一种替代解决方案,该解决方案使用 HCtree 结构进行存储,更适合并行化写入操作。

HC-tree (hctree) 项目试图开发一个新的数据库后端,它改进了常规的 SQLite,如下所示:

改进的并发性: 使用 begin-concurrent 扩展改变了这一点,以便它可以在页面级别使用乐观锁定并发执行。 这在一定程度上提高了并发性,但是页级锁定可以检测逻辑上独立的事务之间的冲突,COMMIT 操作仍然需要序列化。

复制支持: 股票 SQLite 支持 会话扩展,它允许将已提交事务的内容序列化以传输和应用到第二个数据库。 Hctree 将其集成到数据库后端,并添加了对将此类事务应用于领导者-跟随者配置中的跟随者数据库的支持。 在这种情况下,从领先数据库接收到的事务可以比最初应用到领先数据库的事务更快地应用并且具有更高的并发性,因为没有 交易验证。

消除数据库大小限制: Stock SQLite 使用 32 位页码。 使用 4 KiB 的默认页面大小,这将导致最大数据库大小为 2^44 字节或 16 TiB。

要同时处理多个操作, HCtree日志使用事务分离机制 它使用页面级锁,类似于MVCC(多版本包含控制),但使用基于键范围和键范围的事务控制而不是页面集。

读写操作是相对于数据库快照进行的,只有在事务完成后,快照的变化才会对主数据库可见。

客户可以使用三种操作来打开交易:

  • «开始«:交易不考虑其他客户的访问数据。 如果写操作是在一个事务中执行的,那么只有在执行期间没有对数据库进行其他写操作的情况下,该事务才能被提交。
    «开始并发«:事务收集有关其他客户端访问的信息。 如果写操作是在一个事务中执行的,那么在创建快照后其他事务已提交到数据库的情况下,可以提交该事务。
    «开始独家«:开启一个事务后,阻塞其他事务的操作,直到它完成。

HCtree 支持主从复制,允许您将事务转移到另一个数据库,并使从数据库与主数据库保持同步。

HCtree 还取消了数据库大小限制:HCtree 使用 32 位标识符而不是 48 位数据页标识符,这将最大数据库大小从 16 tebibytes 增加到 1 exbibyte(百万 tebibytes)。

HCtree 后端的 SQLite 性能预计至少与经典的单线程后端一样好。 支持 HCtree 的 SQLite 客户端将能够访问 HC-tree 数据库和遗留 SQLite 数据库。

数据来源: https://sqlite.org/


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。