目录
事务
并发一致性问题
封锁
隔离级别
多版本并发控制(MVCC)
Next-Key Locks(临键锁)
关系数据库设计理论
ER 图
分类 | 详情 |
---|---|
事务 | 1. 定义:满足 ACID 特性的一组操作,可通过 Commit 提交或 Rollback 回滚 2. ACID 特性: - 原子性:操作不可分割,依靠回滚日志实现回滚 - 一致性:事务前后数据库状态一致 - 隔离性:未提交修改对其他事务不可见 - 持久性:提交修改永久保存,借助重做日志应对系统崩溃 3. MySQL 默认模式:自动提交模式,每个查询若不手动开启事务,都会自动提交 |
并发一致性问题 | 1. 产生原因:并发环境下事务隔离性难以保证 2. 问题类型: - 丢失修改:一个事务的更新被另一个事务覆盖 - 读脏数据:读取到其他事务未提交的数据 - 不可重复读:同一事务内多次读取同一数据结果不一致 - 幻影读:本质是不可重复读,读取范围数据时因其他事务插入新数据导致结果不同 3. 解决方法:通过并发控制(如封锁)或设置事务隔离级别解决 |
封锁 | 1. MySQL 提供类型:行级锁和表级锁,选择封锁粒度需权衡锁开销和并发程度 2. 封锁类型: - 读写锁:互斥锁 X 锁用于读写,共享锁 S 锁用于读,加锁规则明确,锁兼容关系特定 - 意向锁:引入 IX/IS 表锁,便于多粒度封锁,规定了获取行级锁前获取表锁的规则,各锁兼容关系清晰 3. 封锁协议: - 三级封锁协议:一级解决丢失修改,二级解决读脏数据,三级解决不可重复读 - 两段锁协议:加锁解锁分阶段,遵循该协议是可串行化调度的充分非必要条件,InnoDB 存储引擎采用此协议,还支持隐式和显式锁定 |
隔离级别 | 1. 未提交读: - 特点:事务修改即使未提交对其他事务也可见 - 解决问题&# |