【发布时间】:2020-01-17 03:53:42
【问题描述】:
在页面上:http://www.lmdb.tech/doc/starting.html
§1
事务可以是读写的,也可以是只读的,读写事务可以嵌套。
§2
可以有多个同时活动的只读事务,但只有一个可以写入。一旦打开单个读写事务,所有进一步尝试开始一个事务将阻塞,直到第一个事务被提交或中止。但是,这对只读事务没有影响,它们可以随时继续打开。
那么,如果 lmdb 环境中一次只能存在一个 RW txn,如何将 RW 事务设为另一个 RW 事务的父级?
参考资料:
txn 句柄构造函数mdb_txn_begin(...) 采用可选的 txn 句柄使其成为潜在事务的父级。因此,事先需要一个MDB_txn 实例,比如
parent-txn-handle,以提供给mdb_txn_begin,使parent-txn-handle成为would-be-child-txn-handle的父级。-
来自:nested transactions doc, for BerkeleyDB,因为 lmdb 的文档不包含嵌套 lmdb txn 语义的说明。
嵌套事务用于为在较大事务范围内执行的操作子集提供事务保证。这样做可以让您独立于较大的事务提交和中止操作子集。
【问题讨论】:
标签: transactions lmdb