四个特征
ACID
- 原子性
- 隔离性
- 永久性
- 一致性
三大问题
- 脏读:读了未提交的数据。
- 不可重复读:事务先前读到的数据被删改情况。
- 幻读:事务先前读到的数据出现增加(insert)情况。
四大隔离级别
- 读未提交
- 读已提交
- 可重复读
- 串行化
Spring七种事务传播方式
(带事务的方法互相调用)
考虑一下几点
- 是否支持当前事务
- 是否新建事务
- 嵌套事务(利用savepoint实现“”“子事务”,父事务回滚,子事务也回滚)
- 挂起当前事务(另外启用一个session)
Spring默认发生未被捕获的RuntimeException时才回滚
Mysql的InnoDB
MVVC 多版本并发控制
- 设置隐藏字段(创建、删除的版本号)
- update 相当于增加一条数据。
- 快照读:select
- 当前读:update、delete、insert、for update、lock in share mode
锁
记录锁
间隙锁
next-key锁
for update IX意向锁
B+树和Hash
- B+树方便比较和范围查找等操作。
- 哈希方便单点查找。