MST

星途 面试题库

面试题:MySQL锁在数据恢复场景下如何防止数据冲突

在MySQL数据恢复过程中,可能会存在多个事务同时对数据进行操作的情况,从而引发数据冲突。请阐述MySQL锁机制是怎样防止这种数据冲突的,以行级锁和表级锁为例说明。
16.4万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

表级锁

  1. 概述:表级锁是MySQL中锁粒度最大的一种锁,它会锁定整个表。
  2. 防止数据冲突原理:当一个事务对表中的数据进行操作(如插入、更新、删除等)时,会获取表级锁。其他事务若要对该表进行操作,必须等待当前持有锁的事务释放锁。这样就避免了多个事务同时对表数据进行操作导致的数据冲突。例如,一个事务正在对user表执行更新操作,获取了表级写锁,此时其他事务无论是读操作还是写操作都无法执行,直至该事务提交或回滚释放锁。

行级锁

  1. 概述:行级锁锁粒度最小,只锁定特定的行数据。
  2. 防止数据冲突原理:当事务对某一行数据进行操作时,会获取该行的锁。不同事务可以同时对不同行进行操作,不会互相干扰。只有当多个事务尝试对同一行数据进行操作时,才会产生锁等待。比如在user表中,事务A更新id为1的用户信息,事务B更新id为2的用户信息,两个事务可以同时进行,因为它们操作的是不同行数据。若事务C也想更新id为1的用户信息,就需要等待事务A释放该行的锁。