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

Posted 秋9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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支持行级锁,添加了(行级锁/表级锁)锁的数据不能被其他事务再锁定。也不能被其他事务修改。

以上是关于mysql中select会锁表吗?如果锁表,锁表范围怎么样(程序员必知)的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中。insert到一张表数据,但是不提交,这个时候select,会不会锁表,如果在并发量是500,会锁表吗?

unionall会锁表吗

MySQL|什么情况下拓展字段长度会锁表?

informix行锁会锁表吗

sqlserver锁表机制

mysql lock 锁表