问 题
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