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

底层原理与存储引擎

专题说明

本专题深入剖析MySQL底层架构与存储引擎原理,帮助开发者建立对数据库核心机制的深刻理解,为性能优化和问题排查奠定坚实基础。

学习目标

  1. 理解MySQL三层架构设计及各层职责
  2. 掌握InnoDB、MyISAM、Memory三大存储引擎的特性与适用场景
  3. 理解Buffer Pool的LRU算法与内存管理机制
  4. 掌握Redo Log和Undo Log的工作原理与应用

学习内容

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

  • MySQL架构概述:连接层、SQL层、存储引擎层的设计思想
  • InnoDB存储引擎:索引组织表、行格式、页结构、事务支持
  • MyISAM存储引擎:表级锁、MyISAM文件结构、适用场景
  • Memory存储引擎:内存存储、哈希索引、临时数据处理
  • Buffer Pool与LRU算法:缓冲池结构、页面置换、脏页刷盘
  • Redo Log与Undo Log:崩溃恢复、事务回滚、MVCC实现

学习建议

  1. 先理解整体架构,再深入学习各存储引擎细节
  2. 对比学习InnoDB和MyISAM的差异,理解各自适用场景
  3. 重点掌握Buffer Pool和日志机制,这是性能优化的核心
  4. 结合实际案例理解理论知识,做到学以致用

📝 配套习题(19 题)

💡 参考答案在文末
判断题
1

MyISAM存储引擎支持事务处理。

A

B

2

InnoDB的Redo Log采用循环写入的方式,当日志写满后会覆盖之前的日志内容。

A

B

单选题
3

如果应用需要事务支持和行级锁,应该选择哪种存储引擎?

A

MyISAM

B

Memory

C

InnoDB

D

ARCHIVE

4

InnoDB存储引擎中,所有数据都存放在什么结构中?

A

堆表

B

索引组织表(IOT)

C

临时表

D

内存表

5

InnoDB存储引擎中,数据页的默认大小是多少?每个页的File Header中存储的校验信息用于什么目的?

A

8KB,用于压缩数据

B

16KB,用于检测页是否损坏

C

32KB,用于加速查询

D

64KB,用于事务回滚

6

从MySQL哪个版本开始,InnoDB成为默认存储引擎?

A

MySQL 5.0

B

MySQL 5.5

C

MySQL 5.6

D

MySQL 5.7

7

MyISAM存储引擎使用的是什么级别的锁?

A

行级锁

B

页级锁

C

表级锁

D

无锁

8

在MySQL 8.0之前,InnoDB的Undo Log存储在哪里?MySQL 8.0之后发生了什么变化?

A

一直存储在独立文件中

B

8.0前存储在系统表空间,8.0后支持独立Undo表空间

C

一直存储在系统表空间

D

8.0前存储在独立文件,8.0后存储在内存中

9

MySQL采用的是什么架构设计?

A

单层架构

B

两层架构

C

三层架构

D

四层架构

10

InnoDB的Redo Log主要用于实现什么功能?

A

回滚事务

B

实现读一致性

C

崩溃恢复

D

主从复制

11

InnoDB的Buffer Pool主要用于缓存什么内容?

A

只缓存索引页

B

只缓存数据页

C

缓存数据页和索引页

D

只缓存查询结果

多选题
12

InnoDB Buffer Pool由以下哪些部分组成?

A

数据页缓存

B

索引页缓存

C

脏页链表(Flush List)

D

LRU链表

E

Free链表

13

InnoDB会在哪些情况下触发脏页刷盘?

A

脏页比例超过innodb_max_dirty_pages_pct

B

Redo Log空间不足

C

后台线程定期刷新

D

服务器正常关闭

E

执行FLUSH TABLES命令

14

以下关于Redo Log和Undo Log的描述,哪些是正确的?

A

Redo Log记录的是数据修改后的值

B

Undo Log记录的是数据修改前的值

C

Redo Log用于崩溃恢复

D

Undo Log用于事务回滚

E

Redo Log是顺序写入

15

Memory存储引擎具有以下哪些特点?

A

数据存储在内存中

B

支持事务

C

支持BLOB和TEXT列

D

使用表级锁

E

支持哈希索引

16

Undo Log在MVCC中如何实现不同隔离级别的读一致性?

A

Read Uncommitted直接读最新数据

B

Read Committed读取最新已提交版本

C

Repeatable Read读取事务开始时的版本

D

Serializable使用锁机制

E

Undo Log版本链保存所有历史版本

填空题
17

控制InnoDB Buffer Pool大小的主要参数是____________,控制LRU链表中old区域比例的参数是____________

18

选择存储引擎时应考虑的主要因素包括:____________________________________、查询模式(读多还是写多)。

19

MySQL的三层架构分别是:____________________________________

参考答案
1.错误 2.正确 3.C 4.B 5.B 6.B 7.C 8.B 9.C 10.C 11.C 12.A;B;C;D;E 13.A;B;C;D;E 14.A;B;C;D;E 15.A;D;E 16.A;B;C;D;E 17.innodb_buffer_pool_size;innodb_old_blocks_pct 18.是否需要事务支持;并发访问需求;数据持久性要求 19.连接层;SQL层;存储引擎层
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 MySQL高级查询
下一个专题 → 索引深度与性能调优
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码