隔离性(扩展:MVCC/SNAPSHOT ISOLATION)
- 读已提交
- 读未提交
- 可重复读
- 序列化读
- 快照隔离界别
- 用新的方式实现传统意义上读为提交的场景,同时保证可序列化的隔离级别。
- 写>读时会增加系统成本
- Mvcc适合读写比率比较高的情况
持久性(扩展:持久性保证策略)
- RAID*
- 如何保证数据同时写到两块磁盘
- 每一次请求都要刷磁盘性能过低,将请求打包统一发送到快存储
- 直接写入内存
- 优点:IOPS高
- 缺点:丢数据
- Group commit
- 优点:保证系统的持久性和吞吐量
- 缺点:请求延迟提升
- 直接写入内存
单机事务的典型异常应对策略
- 业务属性不匹配-回滚
- 系统DOWN机回复
- 重启后进入recovery
- 提交后的事务单元继续完成提交
- 未提交事务单元回滚
- 重启后进入recovery
事务的调优原则
- 在不影响业务应用的前提下
- 减少锁的覆盖范围
- Myisam表锁->Innodb行锁
- 原子锁->MVCC多版本
- 增加锁上可并行线程数
- 读锁写锁分离,允许并行读取数据
- 多线程并行读取
- 乐观锁/悲观锁
- 悲观锁-适合并发争抢比较严重的场景
是线程到blocking状态,通知信息OK状态切换回等待状态,需要不停的换入换出.
- 乐观锁-适合并发争抢比较不太严重的场
- 悲观锁-适合并发争抢比较严重的场景
事务单元扩展
Tow Phase lock(2PL)
死锁扩展-U锁
更新锁-更新对只读情况,升级写锁
MVCC拾遗
乐观锁并发方案: 让版本低的并发更新回滚
- 优势:并发低时性能好
- 代价:并发高时失败率高,需要不断重试