分布式事物理解
来源:互联网 发布:亨利领 t恤 知乎 编辑:程序博客网 时间:2024/06/06 10:51
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到内存数据打包再写入内存。 必须达到多次提交后,才能持久化硬盘,所以有额外延迟。
- 分布式事物理解
- 分布式系统/分布式事物/分布式缓存的理解
- 分布式事物
- 分布式事物
- 分布式事物
- 分布式事物
- 分布式事物的原理图
- spring实现分布式事物
- 分布式事物 TCC
- Mybatis分布式事物
- 分布式事物资料收集
- 分布式事物示例3
- 分布式事物解决方案
- Rocketmq分布式事物消息
- 分布式事物管理
- 分布式事物解决方案
- 畅谈分布式事物
- 个人理解 Spring 事物
- Oracle的plsql 函数、存储过程
- Java实现反转单链表
- OS X下卸载R语言
- java基础之Eclipse及常用API(Object类,String类)
- 摸索openwrt的经验
- 分布式事物理解
- C++中的动态内存与智能指针
- bfs+路径记录
- HDU 2389 Rain on your Parade (二分图匹配(Hopcroft-Carp的算法模板))
- Android 打包Jar(发布SDK)常见问题及解决方案
- Android中R文件的丢失问题
- c++程序设计——实验6
- islands打炉石传说—01背包
- InstallShield : 实现二次安装时的覆盖安装