事务 T1 先锁订单表再锁库存表,事务 T2 先锁库存表再锁订单表。在并发执行时,两个事务可能互相等待对方释放资源。为降低这种死锁风险,较合理的设计是()。
死锁常见原因之一是多个事务以不同顺序占有和申请资源,形成循环等待。统一加锁顺序可以减少循环等待条件出现的机会。例如都先锁订单再锁库存,就不容易出现你拿着订单等库存、我拿着库存等订单的互等局面。
选项分析
正确。统一加锁顺序可以降低循环等待概率,是常见死锁预防思路。
错误。不提交会长期占有资源,问题更严重。
错误。删除主键会破坏数据完整性,不解决死锁。
错误。调试日志有助于排查,但不能从机制上预防死锁。
本题为什么容易错
不少同学把死锁和普通阻塞混在一起。普通阻塞是一方等另一方释放资源;死锁是双方或多方互相等待,谁也走不下去。看到相反顺序拿锁,要马上警觉循环等待。
简短答案
为什么统一加锁顺序可以降低数据库死锁风险,正确答案是 A(规定所有相关事务按相同顺序申请锁)。死锁常见原因之一是多个事务以不同顺序占有和申请资源,形成循环等待。统一加锁顺序可以减少循环等待条件出现的机会。例如都先锁订单再锁库存,就不容易出现你拿着订单等库存、我拿着库存等订单的互等局面。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 规定所有相关事务按相同顺序申请锁 | 本题正确答案 | 正确。统一加锁顺序可以降低循环等待概率,是常见死锁预防思路。 | 看到题干核心场景时优先联想到它 |
| 让所有事务都不提交 | 本题干扰项 | 错误。不提交会长期占有资源,问题更严重。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 把主键全部删除 | 本题干扰项 | 错误。删除主键会破坏数据完整性,不解决死锁。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 把日志级别改成调试模式 | 本题干扰项 | 错误。调试日志有助于排查,但不能从机制上预防死锁。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- 让所有事务都不提交:错误。不提交会长期占有资源,问题更严重。
- 把主键全部删除:错误。删除主键会破坏数据完整性,不解决死锁。
- 把日志级别改成调试模式:错误。调试日志有助于排查,但不能从机制上预防死锁。
知识点详解
锁是数据库系统工程师考试中需要结合场景理解的考点。围绕“为什么统一加锁顺序可以降低数据库死锁风险”这类题目,复习时要先看题干描述的是概念定义、适用场景、作用效果,还是与其他选项的区别。本题的题干关键词是“事务 T1 先锁订单表再锁库存表,事务 T2 先锁库存表再锁订单表。在并发执行时,两个事务可能互相等待对方释放资源。为降低这种死锁风险,较合理的设计是()”,它指向的核心答案是 A(规定所有相关事务按相同顺序申请锁)。
备考速记
备考速记:题干如果强调“锁”中的关键目标,就先联想到 锁;如果选项里出现 让所有事务都不提交、把主键全部删除、把日志级别改成调试模式,不要只看名称熟悉,要判断它们是否真正对应题干场景。
锁在锁场景中的作用
锁在本题中的核心价值,是解决“事务 T1 先锁订单表再锁库存表,事务 T2 先锁库存表再锁订单表。在并发执行时,两个事务可能互相等待对方释放资源。为降低这种死锁风险,较合理的设计是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。
同类题怎么考
- 给出锁场景,判断应该选择哪个概念、工具、协议或管理过程。
- 考查锁的作用,要求从四个相近选项中找出最符合题干目标的一项。
- 把锁和让所有事务都不提交、把主键全部删除、把日志级别改成调试模式放在一起考,重点看适用场景是否一致。
- 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
锁在数据库系统工程师软考中的考法
软考选择题通常不会只考概念定义,还会把锁放到锁场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。
解题思路
题干里 T1 和 T2 申请锁的顺序相反,这是死锁题非常典型的布置。老师讲并发控制时会提醒:别只背四个必要条件,要能看出循环等待是怎么形成的。统一顺序就是在源头上减少这个环。
考点定位
死锁题要抓循环等待。预防思路包括统一资源申请顺序、缩短事务时间、合理粒度和必要的超时检测。
易错提醒
- 以为锁越多越安全,忽略锁顺序不一致带来的互等。
- 把数据库死锁简单理解成服务器卡死。
- 只依赖数据库自动检测死锁,不从事务设计上减少死锁。
备考提示
- 复习并发控制时,把封锁协议、两段锁、死锁预防、死锁检测放在一起看。
- 案例题里出现两个事务交叉申请资源,优先检查是否形成循环等待。
你可能还想了解
- 为什么统一加锁顺序可以降低数据库死锁风险?
- 锁是什么?
- 锁在数据库系统工程师考试中怎么考?
- 数据库系统工程师锁题怎么理解?
- 数据库死锁怎么预防怎么考?
- 统一加锁顺序为什么防死锁怎么考?
本文小结
本题核心考点是锁在锁场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(规定所有相关事务按相同顺序申请锁)。