# 1. MySQL 8.0 SKIP LOCKED 的支持? A MySQL 8.0 不支持 SKIP LOCKED B SKIP LOCKED 跳过被其他事务锁定的行而非等待,适合任务队列等场景 ✓ 正确答案 C SKIP LOCKED 会等待锁释放 D SKIP LOCKED 只用于快照读
# 2. PostgreSQL SKIP LOCKED 语法(9.5+)的应用,任务队列? A 只用于 MySQL B 多个 worker 用 FOR UPDATE SKIP LOCKED 各取不同行,避免锁竞争与重复领取 ✓ 正确答案 C SKIP LOCKED 会阻塞等待 D 任务队列必须用外部 MQ
# 3. 热点行更新的解决,应用层队列、Redis 预扣减、版本号、CAS? A 只能靠数据库行锁 B 热点行无法解决 C 应用层队列串行化、Redis 预扣减分担、版本号/CAS 乐观冲突可降低单行写竞争 ✓ 正确答案 D 版本号无法用于热点行
# 4. 热点行(Hot Row)更新的竞争,秒杀、库存扣减、计数器? A 热点行只有一个请求写 B 热点行竞争不影响性能 C 秒杀/库存/计数器都集中写同一行,行锁排队与锁竞争成为瓶颈 ✓ 正确答案 D 行锁能完全解决热点竞争
# 5. READ COMMITTED 下 UPDATE 的当前读语义? A UPDATE 是快照读 B UPDATE 读到未提交数据 C UPDATE 读取最新已提交数据并加记录锁(RC 下不加间隙锁) ✓ 正确答案 D UPDATE 不加锁
# 6. READ COMMITTED 下子查询的可重复性? A RC 下子查询在同一语句内一致,跨语句因每次新建快照而不一定一致 ✓ 正确答案 B 子查询在事务内永远一致 C 子查询与隔离级别无关 D 子查询不一致
# 7. Redis 分布式锁(SETNX)的应用与 Redlock 算法? A Redlock 与 SETNX 无关 B SETNX 无法实现分布式锁 C 分布式锁不需要过期时间 D SETNX(NX+PX)实现互斥与防死锁,Redlock 在多数实例上获取锁以提升容错 ✓ 正确答案
# 8. 分布式锁的超时与续约(Lease)? A 锁不需要过期时间 B 续约会造成死锁 C 续约(租约)让持有者在业务执行期间自动续期,避免锁过期导致互斥失效,崩溃则停止续约自动释放 ✓ 正确答案 D 过期时间必须设得极短
# 9. 热点行更新除行锁竞争外,还会争抢 Buffer Pool mutex、页闩锁与 redo log 写入带宽,为什么单纯靠索引或隔离级别无法解决? A 索引优化可完全解决热点行 B 热点行还会争抢 Buffer Pool mutex、页闩锁与 redo 带宽,需分散热点或串行化解决 ✓ 正确答案 C 热点行只有行锁竞争 D 隔离级别能解决热点行
# 10. 不一致分析(Inconsistent Analysis)的定义,聚合查询期间数据变更导致错误的合计? A 聚合查询不受并发影响 B 聚合查询期间数据变更导致基于新旧混合数据的错误合计 ✓ 正确答案 C 不一致分析就是死锁 D 聚合查询永远正确
# 11. 任务队列(Task Queue)模式,消息队列 + 异步消费? A 任务必须同步处理 B 任务队列无法提升吞吐 C 任务队列只用于数据库 D 消息队列存任务、消费者异步处理,实现解耦与削峰,数据库也可用 SKIP LOCKED 实现 ✓ 正确答案
# 12. 应用层幂等性(Idempotency)的实现,幂等键(Idempotency Key)? A 幂等性无法实现 B 幂等键与重试无关 C 幂等键唯一标识请求,重复请求直接返回首次结果,配合唯一约束防止重复处理 ✓ 正确答案 D 幂等键只用于读
# 13. 不一致分析的解决,快照隔离、SERIALIZABLE、原子更新? A 无法解决 B 快照隔离、SERIALIZABLE、原子更新分别从读快照、串行化、原子写角度解决 ✓ 正确答案 C 原子更新无法解决问题 D 只能靠应用层
# 14. SKIP LOCKED 的约束冲突? A 可用于普通快照读 B 仅用于当前读(FOR UPDATE/SHARE),可能返回空集,需应用层处理 ✓ 正确答案 C 遇到锁会报错 D 所有数据库都支持
# 15. 为什么把热点行的并发更新在应用层串行化(单线程队列)有时比依赖数据库行锁吞吐更高?队列化的代价是什么? A 应用层串行化吞吐更低 B 数据库行锁永远最优 C 队列化无任何代价 D 应用层串行化绕开数据库锁与页竞争,吞吐可能更高,但代价是延迟、队列可靠性、幂等与额外组件 ✓ 正确答案
# 16. 热点行为什么不适合乐观锁?冲突率接近百分之百时重试风暴会放大数据库负载,如何用失败降级与限流保护? A 热点行适合乐观锁 B 重试不会放大负载 C 热点行冲突率接近 100%,乐观锁重试会放大负载,应串行化并配合限流与失败降级 ✓ 正确答案 D 乐观锁无冲突
# 17. 热点账户余额拆分(多子账户)为什么能降低行锁竞争?拆分与对账如何保证总额正确? A 拆分会增加行锁竞争 B 多子账户把热点行分散成多行降低竞争,靠流水与对账保证总额正确 ✓ 正确答案 C 拆分后不需对账 D 拆分无法降低竞争
# 18. 分库分表后热点用户仍可能落在单一分片,如何通过二次分片或按用户维度冗余复制解决单分片压力? A 分库分表天然解决热点 B 热点用户仍集中在单分片,可用二次分片或按用户维度冗余复制分散压力 ✓ 正确答案 C 热点用户无法处理 D 冗余复制不分散压力