MySQL的Innodb引擎下可重复读隔离级别下的行锁与读已提交隔离级别下的行锁有什么区别?
在MySQL的InnoDB引擎下,可重复读隔离级别和读已提交隔离级别都是常用的隔离级别,它们的行锁有以下区别:
-
可重复读隔离级别下的行锁:在可重复读隔离级别下,事务在读取数据时会对读取的每一行数据加共享锁(Shared Lock)。这意味着其他事务可以同时读取同一行数据,但不能对该行数据进行修改。当事务需要修改数据时,会将这些数据加排他锁(Exclusive Lock),这样其他事务就不能读取或修改该行数据。
-
读已提交隔离级别下的行锁:在读已提交隔离级别下,事务在读取数据时不会加任何锁,也就是说,其他事务可以同时读取和修改同一行数据。当事务需要修改数据时,会将这些数据加排他锁,这样其他事务就不能读取或修改该行数据。
总的来说,可重复读隔离级别下的行锁会对读取的每一行数据加共享锁,而读已提交隔离级别下的行锁则不会对读取的数据加任何锁。这也是为什么在可重复读隔离级别下,事务可以读取一致的数据快照,而在读已提交隔离级别下,事务读取的数据可能会受到其他事务的修改影响。
原文地址: https://www.cveoy.top/t/topic/iTtC 著作权归作者所有。请勿转载和采集!