MySql InnoDB的行锁和表锁
首先如果使用锁,必须在事务内上锁“for update”!!
如果上了锁,那么在并发很高的情况下,必须要这个带锁的事务执行commit之后才会允许其他的事务执行。
InnoDB默认是使用行锁的,但是条件是要有指定的明确的主键,才会用行锁,否则都是表锁,InnoDB引擎的数据表请尽量不要使用表锁。
假设我们有一张表,有users表,表两个字段,id,name,并且id为主键。
这样会使用行锁:
select * from users where id=10;
下面的都是表锁
select * from users where id>1 for update; select * from users where name='tom' for update; select * from users where id != 3 for update; select * from users where name like '%tom%' for update;
如果查无此数据则不上锁
select * from users where id='-100' for update;
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
请登录后发表评论
注册
社交帐号登录