mysql查询会加锁么_Mysql 执行select查询语句的时候 会自动加锁吗?

MySQL的SELECT语句在不同引擎下会有不同的锁行为。在MyISAM中,长时间的SELECT会导致表级读锁,阻止其他session的UPDATE操作,直到查询结束。而在InnoDB中,实现的是行级锁,允许并行读,提供更高的并发性能。官方推荐使用InnoDB作为默认引擎,以利用其更细粒度的锁机制。
摘要由CSDN通过智能技术生成

问 题

Mysql 执行 select 语句会根据表的引擎的不同而自动加锁吗?

或者说有没有什么文档是介绍Mysql 查询时内部的锁的机制(不是手动加锁)

更新一下问题,举例子:

myisam如果先在session1 中执行耗时长的select 查询(非事务),然后session2中执行update这个被查询的表的数据,会立即执行吗?还是要等到session1查询结束后才会执行?

做个实验

select * from pre_common_member查询一下比较大的表

update pre_common_member set password=1234568 where uid=4117593同时在另一个session 更新这个表

| 239 | root | localhost | bbsdata | Query | 10 | Sending data | select * from pre_common_member |

| 410 | root | localhost | bbsdata | Query | 2 | Waiting for table level lock | update pre_common_member set password=1234568 where uid=4117593

上面时两个语句执行中执行show processlist显示的结果,update 在等待table level locking

自己查了半天,找到的最贴近的文档内容:

MySQL grants table write locks as follows:

If there are no locks on the table, put a write lock on it.

Otherwise, put t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值