面试题答案
一键面试表级锁
- 概述:表级锁是MySQL中锁粒度最大的一种锁,它会锁定整个表。
- 防止数据冲突原理:当一个事务对表中的数据进行操作(如插入、更新、删除等)时,会获取表级锁。其他事务若要对该表进行操作,必须等待当前持有锁的事务释放锁。这样就避免了多个事务同时对表数据进行操作导致的数据冲突。例如,一个事务正在对
user
表执行更新操作,获取了表级写锁,此时其他事务无论是读操作还是写操作都无法执行,直至该事务提交或回滚释放锁。
行级锁
- 概述:行级锁锁粒度最小,只锁定特定的行数据。
- 防止数据冲突原理:当事务对某一行数据进行操作时,会获取该行的锁。不同事务可以同时对不同行进行操作,不会互相干扰。只有当多个事务尝试对同一行数据进行操作时,才会产生锁等待。比如在
user
表中,事务A更新id为1的用户信息,事务B更新id为2的用户信息,两个事务可以同时进行,因为它们操作的是不同行数据。若事务C也想更新id为1的用户信息,就需要等待事务A释放该行的锁。