5.8 事务
事务的基本原理
原子性:要么完全执行成功,要么不做任何改变;
一致性:当多个事务并行执行时,元素的属性在每个事务中保持一致;
隔离性:当多个事务同时执行时,互不影响;
持久性:一旦提交事务,数据的更改就不会丢失。
事务的数据结构
事务在内存里面也会维护相应的数据结构以支撑事务的并发、回滚、持久化等操作
字段解释
(1)id字段:这是事务的全局唯一标识,通过分析它与具体的操作关联,就能够知道一个事务包含哪些操作。
(2)snapshot data 字段:MongoDB 使用的是快照隔离级别的事务,这个字段用于保存事务的快照信息,具体来说它会有 snap_min和 snap_max两个属性,通过这两个属性能够计算一个事务开始时的数据范围,每个事务开始时都会构造一个这样的快照.
(3)commit_timestamp字段:表示事务提交的时间,
(4)durable_timestamp字段:表示事务修改的数据已持久化的时间,与具体操作中的 durable_ts 字段关联。
(5)prepare timestamp字段:表示事务开始准备的时间
(6)WT_TXN_OP字段:包含事务的修改操作,用于事务回滚和生成事务日志( Journal )。
(7)1ogrec字段:表示事务日志的缓存,用于在内存中保存事务日志(对于MongoDB来说 Journal日志就是事务日志)。