mysql中select会锁表吗?如果锁表,锁表范围怎么样(程序员必知)

mysql中select会锁表吗?正确答案是会锁表,有些情况是表锁,有些情况是行锁。

有的认为mysql的 select 会锁表 ,有的认为 mysql 的查询不会锁表 。
其实这2种观点都有些片面。

锁表跟存储引擎INNODB 和MYISAM关系很大。
对于myisam的表select 是会锁定表的 ,会导致其他操作挂起,处于等待状态。
对于innodb的表select 有些情况是表锁,有些情况是行锁。

由于InnoDB预设的是Row-Level Lock,只有明确指定主键的时候MySql才会执行Row lock,否则MySql将会执行Table Lock.

1、明确指定主键则是行锁

2、明确指定主键,若无数据则无锁

3、无主键,table lock

4、主键不明确,table lock

注:MyAsim只支持表级锁,InnerDB支持行级锁,添加了(行级锁/表级锁)锁的数据不能被其他事务再锁定。也不能被其他事务修改。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>