事务ACID
原子性(atomicity)
一致性(consistency)
隔离性(isolation)
持久性(durability)
锁
乐观丶悲观丶行丶表
MVCC
多版本并发控制,解决并发访问数据库系统时,提高读取效率,因为加锁以后会影响效率。
MVCC->当前读,总是读取最高版本的记录。
MVCC->快照读,读取历史版本的记录。
Undolog
为了回滚设计
select * from table ->快照读
Insert Update Delete ->当前读
select …… lock in share mod ->当前读
select …… for update ->当前读
例
问:A最后select结果会体现B->update 结果吗?
答:看隔离级别。
MYSQL有不同的隔离级别,不同的隔离级别下读取的结果可能不同。
可重复度
RR->默认隔离级别
读已提交
RC
读未提交
无数据库使用方案
序列化
单线程操作
结论
RR:当事务B->commit之后事务A在没有commit之前它能获取到的是旧数据,只有在自己commit之后才能获取到新的数据。(也有特殊情况)
RC:当事务B->commit之后事务A立即就可以读取到最新的数据。