全部学科
Python全栈
python
NodeJS全栈
nodejs

MySQL锁事务与并发控制

24 题 50 分钟 难度:★★★

考察知识点

本试卷涵盖以下核心知识点:

锁机制概述(5题)

  • 锁的作用与分类体系
  • 锁粒度对并发性能的影响
  • 不同存储引擎的锁支持

共享锁与排他锁(6题)

  • S锁(共享锁)的特性与兼容性
  • X锁(排他锁)的特性与兼容性
  • 锁兼容矩阵的理解与应用
  • 加锁语法(LOCK IN SHARE MODE / FOR UPDATE)

锁等待与超时(5题)

  • 锁等待机制的原理
  • innodb_lock_wait_timeout参数配置
  • 锁等待超时处理策略
  • 死锁检测与处理

行锁与表锁(6题)

  • 行级锁的特点与适用场景
  • 表级锁的特点与适用场景
  • InnoDB行锁的实现机制
  • 意向锁(IS/IX)的作用
  • Record Lock、Gap Lock、Next-Key Lock

综合知识点(2题)

  • 意向锁与锁机制的组合应用
  • 锁等待与共享/排他锁的综合场景
💡 参考答案在文末
判断题
1

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

A

B

2

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

A

B

3

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

A

B

4

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

A

B

单选题
5

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

A

允许多个事务同时持有

B

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

C

只用于读操作

D

可以和其他共享锁共存

6

表级锁的特点是什么?

A

只锁定单行数据

B

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

C

锁定索引

D

只用于InnoDB引擎

7

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

A

提高查询速度

B

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

C

减少存储空间

D

加速索引创建

8

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

A

直接锁定数据行

B

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

C

替代共享锁和排他锁

D

用于死锁检测

9

InnoDB在什么情况下会使用表级锁?

A

所有UPDATE操作

B

执行DDL语句(如ALTER TABLE)或LOCK TABLES命令

C

所有SELECT操作

D

任何事务操作

10

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

A

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

B

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

C

只用于查询,不加锁

D

加意向锁

11

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

A

只支持表级锁

B

只支持行级锁

C

支持表级锁和行级锁

D

只支持页级锁

12

什么是锁等待?

A

锁自动释放的过程

B

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

C

锁超时后自动获取锁

D

锁升级的过程

13

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

A

innodb_lock_wait_timeout

B

lock_wait_timeout

C

wait_timeout

D

innodb_timeout

14

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

A

只允许一个事务持有

B

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

C

阻止所有其他事务访问

D

只用于写操作

15

行级锁的特点是什么?

A

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

B

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

C

锁定多个数据页

D

只用于查询操作

多选题
16

如何查看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

17

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

A

共享锁(S锁)

B

排他锁(X锁)

C

意向锁

D

自增锁

E

元数据锁(MDL)

18

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

A

InnoDB默认使用行级锁

B

MyISAM只支持表级锁

C

行锁适合高并发OLTP场景

D

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

E

行锁开销大但并发性能好

19

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

A

SELECT ... LOCK IN SHARE MODE

B

SELECT ... FOR SHARE(MySQL 8.0+)

C

SELECT ... FOR UPDATE

D

UPDATE ...

E

INSERT ...

20

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

A

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

B

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

C

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

D

死锁检测由innodb_deadlock_detect参数控制

E

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

填空题
21

InnoDB锁等待超时参数____________默认____________秒,超过时间事务会____________

22

锁兼容关系:____________之间兼容,____________与任何锁都不兼容,SELECT ... FOR UPDATE加____________

23

行级锁锁定____________,并发性能____________但开销____________;表级锁锁定整张表,并发性能差但开销小。

24

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

参考答案
1.错误 2.正确 3.正确 4.正确 5.B 6.B 7.B 8.B 9.B 10.B 11.C 12.B 13.A 14.B 15.B 16.A;B;C;D;E 17.A;B;C;D;E 18.A;B;C;D;E 19.A;B 20.A;B;C;D;E 21.innodb_lock_wait_timeout;50;回滚 22.共享锁;排他锁;排他锁 23.单个数据行;好;大 24.并发访问的数据一致性;细;行级锁和表级锁
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 MySQL索引深度与性能调优
下一套试卷 → MySQL高可用架构与分布式实践
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码