锁粒度
表锁、行锁
事务
ACID
原子性
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚
一致性
数据库总是从一个一致性的状态转换到另外一个一致性的状态
隔离性
通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的
持久性
一旦事务提交,则其所做的修改就会永久保存到数据库中
隔离级别
读未提交
事务可以读取未提交的数据。 (脏读)
读已提交
一个事务开始时,只能看见已经提交的事务所做的修改
两次执行同样的查询,可能会得到不一样的结果 (不可重复读)
可重复读
同一个事务中多次读取同样记录的结果是一致的。
幻读
MVCC 与 行锁的区别
死锁
InnoDB: 将持有最少行级排他锁的事务进行回滚
MVCC
每行记录隐藏两列:行创建时间、行删除时间 (系统版本号)
- 版本早于当前事务版本的数据行
- 删除版本要么未定义,要么大于当前事务版本号
Insert 新增一条; Delete 删除一条; Update 新增一条,更新旧数据
log
redo, undo
网友评论