全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📝 1 篇文章 20 道配套习题

锁事务与并发控制

专题说明

本专题深入剖析MySQL锁机制与并发控制原理,帮助开发者理解各类锁的工作机制、兼容规则、等待超时处理,掌握高并发场景下的锁优化策略,有效解决数据竞争问题。

学习目标

  1. 理解锁机制的基本作用与分类
  2. 掌握共享锁与排他锁的兼容性规则
  3. 理解行锁与表锁的区别与适用场景
  4. 掌握意向锁的工作原理与作用
  5. 学会处理锁等待、超时与死锁问题

学习内容

本专题涵盖以下核心知识点:

  • 锁机制概述:锁的作用、锁的分类、锁的生命周期
  • 共享锁与排他锁:S锁/X锁特性、锁兼容矩阵、加锁方式
  • 锁等待与超时:锁等待机制、超时参数配置、死锁检测与处理
  • 行锁与表锁:行锁特点、表锁特点、锁升级机制、意向锁作用

学习建议

  1. 先理解锁的基本概念,再深入学习各类锁机制
  2. 重点掌握锁兼容矩阵,理解锁冲突的根本原因
  3. 理解意向锁的设计思想,体会表锁与行锁协调机制
  4. 结合实际场景分析锁等待与死锁,形成排查思路
  5. 实践中使用SHOW ENGINE INNODB STATUS分析锁状态

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
单选题

MySQL中锁机制的主要作用是什么?

A

提高查询速度

B

保证并发访问时数据的一致性和完整性

C

减少存储空间

D

加速索引创建

2
单选题

MySQL的InnoDB存储引擎支持哪些级别的锁?

A

只支持表级锁

B

只支持行级锁

C

支持表级锁和行级锁

D

只支持页级锁

3
多选题

MySQL中锁按照类型可以分为哪些?

A

共享锁(S锁)

B

排他锁(X锁)

C

意向锁

D

自增锁

E

元数据锁(MDL)

4
判断题

锁粒度越细(如行级锁),并发性能越好,但锁管理的开销也越大。

A

B

5
填空题

锁机制的核心作用是保证____________________,锁粒度越______并发性能越好,InnoDB支持______________两种粒度。

6
单选题

共享锁(S锁)的特点是什么?

A

只允许一个事务持有

B

允许多个事务同时持有,用于读取操作

C

阻止所有其他事务访问

D

只用于写操作

7
单选题

排他锁(X锁)的特点是什么?

A

允许多个事务同时持有

B

只允许一个事务持有,阻止其他事务的读写操作

C

只用于读操作

D

可以和其他共享锁共存

8
判断题

共享锁和排他锁是兼容的,可以同时存在于同一数据上。

A

B

9
多选题

以下哪些SQL语句可以手动添加共享锁?

A

SELECT ... LOCK IN SHARE MODE

B

SELECT ... FOR SHARE(MySQL 8.0+)

C

SELECT ... FOR UPDATE

D

UPDATE ...

E

INSERT ...

10
单选题

SELECT ... FOR UPDATE语句的作用是什么?

A

加共享锁,允许其他事务读取

B

加排他锁,阻止其他事务读写,为后续更新做准备

C

只用于查询,不加锁

D

加意向锁

11
单选题

什么是锁等待?

A

锁自动释放的过程

B

事务请求锁时,锁已被其他事务持有,需要等待锁释放

C

锁超时后自动获取锁

D

锁升级的过程

12
单选题

控制InnoDB锁等待超时时间的参数是什么?

A

innodb_lock_wait_timeout

B

lock_wait_timeout

C

wait_timeout

D

innodb_timeout

13
判断题

InnoDB默认的锁等待超时时间是50秒,超过此时间事务会自动回滚。

A

B

14
多选题

如何查看MySQL当前的锁等待情况?

A

SHOW ENGINE INNODB STATUS

B

SELECT * FROM information_schema.INNODB_LOCKS

C

SELECT * FROM performance_schema.data_locks(MySQL 8.0)

D

SELECT * FROM information_schema.INNODB_LOCK_WAITS

E

SHOW PROCESSLIST

15
单选题

行级锁的特点是什么?

A

锁定整张表,阻止所有操作

B

只锁定单个数据行,其他行仍可访问

C

锁定多个数据页

D

只用于查询操作

16
单选题

表级锁的特点是什么?

A

只锁定单行数据

B

锁定整张表,阻止其他事务对该表的访问

C

锁定索引

D

只用于InnoDB引擎

17
判断题

行级锁比表级锁并发性能更好,但锁管理的开销更大。

A

B

18
多选题

以下关于行锁和表锁的描述,哪些是正确的?

A

InnoDB默认使用行级锁

B

MyISAM只支持表级锁

C

行锁适合高并发OLTP场景

D

表锁适合批量操作、DDL操作

E

行锁开销大但并发性能好

19
单选题

InnoDB的意向锁(Intention Lock)的主要作用是什么?

A

直接锁定数据行

B

提高表级锁与行级锁兼容性判断的效率

C

替代共享锁和排他锁

D

用于死锁检测

20
多选题

关于MySQL死锁的描述,哪些是正确的?

A

死锁是两个事务相互等待对方释放锁形成的循环等待

B

InnoDB会自动检测死锁并回滚其中一个事务

C

设置合理的锁等待超时可以避免长时间死锁阻塞

D

死锁检测由innodb_deadlock_detect参数控制

E

按固定顺序访问资源可以预防死锁

← 上一个专题 索引深度与性能调优
下一个专题 → 高可用架构与分布式实践

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库