数据库系统原理

目录

事务

并发一致性问题

封锁

隔离级别

多版本并发控制(MVCC)

Next-Key Locks(临键锁)

关系数据库设计理论

ER 图

MVCC举例说明

提交读(READ COMMITTED)

可重复读(REPEATABLE READ)


事务

并发一致性问题

封锁

隔离级别

多版本并发控制(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. 未提交读:
- 特点:事务修改即使未提交对其他事务也可见
- 解决问题&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值