高级事务模型或高级事务模型是为了让数据库创建者或公司更容易管理事务而创建的模型,以便解决所有可能的可能性。事务模型对于DBMS中事务的形成起着非常重要的作用,事务必须保证事务的效果始终能够保证不失败,这取决于隔离级别的创建,或者说Isolation Level,其中有是级别或模型,其作用是保证交易不会失败。高级事务模型可以分为几种类型。一些例子是嵌套事务模型和 Sagas。以下是有关交易模型的更多详细信息。
嵌套事务是基于数据的事务
以已经启动的事务指令开始,嵌套事务在不同的数据库中实现方式不同。然而,它们的共同点是,在最外层事务提交之前,更改对于不相关的事务是不可见的。这意味着内部事务中的提交并不总是能够在系统更新后幸存下来。
- 如果程序已在事务中执行并发出 Start 命令,则 Start 将创建其父事务的子事务,而不是创建新的独立事务。例如,如果从 PayLoanFromChecking 调 电话清单 用 DebitChecking,则 DebitChecking 中的 Start 将启动子事务。
- 如果程序尚未在事务内执行并发出 Start 命令,则 Start 将创建一个新的独立事务(称为顶级事务),它不是另一个事务的子事务。例如,Start at PayLoanFromChecking 创建一个顶级交易。
规则(5)是关于嵌套事务的隔离行为的要求
如果两阶段锁定是用于实现隔离的机制,则需要稍微修改以满足规则(5)。
- 顶级事务以与非嵌套事务模型中相同的方式组织锁。
- 当子事务 S 提交或中止时,其键由父 电话号码 事务 S 继承,父事务 S 可以是顶级事务,也可以是嵌套层次结构中更高一级的另一个子事务。
- 如果嵌套层次结构中 S 的祖先持有 x 上的冲突锁(如果有),则代表子事务 S 锁定数据项 x 的请求将被授予。
(ii) 和 (iii) 的效果是同一父事务的子事务彼此锁相,因此彼此可串行化。因此,尽管子事务可以与其操作的多个交错同时执行,但最终我们可以将同一父事务的子事务视为独立的操作。