赞
踩
一、从属性分
更新某一行,事务还没提交。修改表结构会怎样?
更新某一行会加行锁,事务没提交,行锁未释放,修改表结构会加表锁。修改表结构会阻塞。事务提交后才会执行
快照读
select xx from xxx
不加锁的普通 SELECT 都属于快照读。
单纯的查询操作叫做快照读,使用mvcc版本控制,其他事务操作不可见
但是不能完全解决幻读。事务A查询得到10条记录,事务B插入一条id=11。事务A在查询仍然是10条。但是事务A可以修改id=11的数据,事务A在查询会查询到11条记录。这种还是会产生幻读。
当前读和update detele都是使用next-key Lock算法
select for update
next-key Lock就是间隙锁加行锁
锁住上下两个间隙。在锁住索引
如果where条件不走索引,next-key Lock会锁住表的所有间隙和所有记录。相当于锁表
快照读根据readView和undolog结合实现事务的隔离
每行记录最后面隐藏了最新的版本号trx,并且隐藏了此版本指向undolog的指针
undolog保存了一个版本链。如果事务id与trx相等,直接返回mysql数据即可,如果不相等需要去undolog根据版本链找到对应版本数据返回
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。