在非序列化事务隔离级别下,普通select语句不加锁,读取表时不受锁影响。若使用select.. for share/ select ... for update,需注意其锁定机制。总结来说,锁表后是否还能读表取决于事务隔离级别。在序列化隔离级别下,读取操作可能受到锁影响,而在其他级别,读取通常不受影响。理解并掌握MySQL的锁...
mysql的innodb表锁作用到底是啥?锁表后还能读吗?
官方文档指出,DML语句在没有适用索引,需扫描整个表时,会锁住表中所有行,这可能阻止其他用户插入到该表。确保创建有效索引以减少扫描行数至关重要。
在repeatable read事务隔离级别下,会加gap锁,不仅锁定行,还锁定行与行之间的间隙,以阻止其他会话在此区间插入。索引机制在此级别下更为复杂。
在非序列化事务隔离级别下,普通select语句不加锁,读取表时不受锁影响。若使用select.. for share/ select ... for update,需注意其锁定机制。
总结来说,锁表后是否还能读表取决于事务隔离级别。在序列化隔离级别下,读取操作可能受到锁影响,而在其他级别,读取通常不受影响。理解并掌握MySQL的锁机制,对于提高数据库性能和优化查询至关重要。2024-11-09