存储引擎 innerdb
set autocommit=0;
update stu set name='wangmutian' id = 2;
//在提交之前其他的update 操作都在堵塞状态
commit;
悲观锁
set autocommit=0;
//当我在查的时候 你就别查了
select * from goods FOR UPDATE;
//... 所有业务逻辑走完
commit; // 后其他的查询才会开始
乐观锁
在数据表中添加字段 version (版本号)
set autocommit=0;
//第一遍查询获得一个版本号
select * from goods ;
update version=version+1 where version = (之前查询到的版本号)
commit;
存储引擎 MyISAM
可以通过过锁表的机制实现数据的稳定
//读锁
//锁定之后这个表就只能读了
LOCK TABLE `goods` READ;
//用完之后给表解锁
UNLOCK TABLE;
//写锁
//锁定之后这个表就只能读了
LOCK TABLE `goods` WRITE;
//用完之后给表解锁
UNLOCK TABLE;
读锁演示
1、表读锁
2、表写锁
元数据锁