数据库的表锁和行锁 | mysql 技术论坛-江南app体育官方入口
innodb存储引擎
隐式加锁
当对数据库增删改的时候,会检测字段有没有索引,如果有索引,那就加行锁,反之加表锁
显示加锁
写锁
在正常的查询语句后面加上
for update
其他用户对这行可以查,不可以写读锁
在正常的查询语句后面加上
lock in share mode
意向锁
是innodb自动加的,不需要用户干预
间隙锁
是对键值在条件范围内却并不存在的记录加锁,就叫间隙锁
比如:user表里有id为1,3,4,5四条数据,查询语句是where id > 5 for update,另一个用户同时插入一条新的记录就不行,它会把id大于5以后但是不存在的数据给锁上(6,7,8 . . . )
myisam存储引擎
隐式加锁
在查询操作的时候,自动加上读锁。读锁就是允许其他用户对这个表的读操作,但是会阻止写操作
在增删改操作的时候,自动加上写锁。写锁就是拒绝其他用户对这个表的读、写操作
显式加锁
look tables 表名 read | write
支持并发时插入:
look tables 表名 read | write local
本作品采用《cc 协议》,转载必须注明作者和本文链接
emin
推荐文章: