分布式事物理解

1. 单机事物理解:

   具有ACID特性才能算是事物,

   A: 原子性  , 即 事物的组成部分 要么全部执行,要么都不执行。 原子性通过undo 实现, 即事物执行过程中的步骤对应几个版本,版本对应响应的Undo回滚段,数据状态的每次变化都会保存在undo日志里。 执行中某一步骤出了问题要回滚 通过该步骤前一段步骤对应的undo来恢复数据状态。

  C:  一致性 ,即 事物内的 数据状态在执行过程中整体必须保持一致, eg: 事物1:A转100给B,事物2: B转100给C ;  在事物1:A-100执行过程中,事物2访问A帐号扔为100执行了转账操作给C,而事物1 也能正常执行A-100转给B   , 这样原本A、B、C 三账号共计100元 变为 200元,  数据不一致。

        一致性(happing-before) 保证 在多个事物并发执行时,每个事物的执行过程不受其他事物干扰,让该事物看起来就象只有它一个事物执行,从而保证该单元事物涉及的数据都是按照该事物逻辑单元执行,  即 保证事物执行涉及的数据不被其他事物更改或访问。  一致性与原子性是不同的概念。

     事物的一致性其实保证 单元事物在全部执行完之后才能对其他单元事物可见。这也就避免上面的转账问题。

 i :  隔离性:  由 锁 实现 事物之间的隔离,  不同的锁(序列化,排它锁,读写锁分离、写锁覆盖读锁(读写事物))  引用:所有操作序列化 -》 对共享数据加 排他锁(表级,行级)--》读写锁分离 (共享锁,排他锁)实现读读并行,即实现可重复读的隔离级别 --》 要实现读写并行,即去掉读锁(共享锁),但是就不可重复读了。

  隔离是对一致性的破坏,最高级别的隔离即 事物之间串行化为一个队列执行 是对一致性最低级的破坏。

  隔离级别:(从高到低)

    序列化读写  (所有读,写事物都不能并发执行)

    可重复读      (可读读并发)

     读已提交     (可读读,读写并发,通过后面的写事物的写锁 覆盖 前面的 读事物读锁,且前面的读事物里的数据不能重复读)

     读未提交    (可读读、读写、写读并发,  写读并发会出现脏读)

 D:  持久性: 提交后的事物必须要持久化,持久化过程可能会出现不能保存问题。

     针对持久化 与  提交延迟 的 调校 做出的 持久策略如下:

    1. 事物一旦COMMIT到内存 就返回成功,标志事物处理完成。 延迟低,但内存持久化硬盘得不到保证。

    2. 将多次commit到内存数据打包再写入内存。   必须达到多次提交后,才能持久化硬盘,所以有额外延迟。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值