课堂测验
使用说明:
- 推荐使用 Anki 软件,辅助记忆
- 一定要自行创建问题卡片,并搜集和整理答案
- 在能够理解答案,并能独立动手操作的前提下,再去记忆
- 按照课程进度,添加新的问题卡片
- 每天利用碎片化时间,根据 Anki 提示,复习卡片
- 问题如果有歧义或有其他任何问题,欢迎留言
前言
- 本课程分几大部分
- 编程或软件开发的核心是什么,以此为基础还要提升哪些方面
- 本课程实验环境采用什么操作系统和什么数据库软件
- 用 linux 操作系统作为实验环境的理由有哪些
- linux 常用的发行版有哪些,本课程实验环境使用哪个发行版
- linux 命令行语法是什么
- 写出常用的 12 个 linux 命令、功能和缩写(如果有)
- 为什么选择 MySQL 数据库软件
- 市面上有哪些 DBMS
- 从哪个网站查到 DBMS 的排名
- 数据库相关职位有哪些
- 如何查看 MySQL 的版本号
- 为什么 MySQL 有两个版本号
- 如何进入 MySQL 控制台环境,命令行参数都是什么含义
- MySQL 控制台默认提示符是什么
- MySQL 控制台如何获取帮助
- MySQL 控制台有哪些常用的命令和快捷方式
- 如何退出 MySQL 控制台
绪论
数据管理
- 何为数据
- 数据的管理操作有哪些分类,每种分类下面有哪些具体操作
- 解释一下每种数据管理操作
- 数据管理经历了哪些发展阶段
- 数据库管理方案分哪两大类
- 比较文件和 DBMS 作为数据管理方案的优劣
- 在 linux 命令行,哪些命令可以做文件数据管理,这些命令如何使用
数据库系统
- 什么是数据库
- 什么是系统
- 三大论是什么创始人是谁
- 什么是数据库系统
- 数据库系统有哪些组成部分
- 什么是数据库管理系统
- DBMS 是哪些单词的缩写
- 数据库管理系统有哪些分类方式,为每种分类写出几种 DBMS 产品
- MySQL 属于上述的哪种分类
- 如何在实验环境中,找到数据库存放的位置
- MySQL 默认数据库存放在哪里
- MySQL 数据库和文件目录有什么对应关系
- MySQL 有哪些系统数据库,各自的作用是什么
- 是否每个系统数据库都有对应的文件夹
- MySQL 数据库中的表对应哪些文件
- 文件名和表名有什么关联关系,文件扩展名表示什么
- 如何在实验环境中查看 MySQL 服务运行的进程
- 如何查看 MySQL 服务运行的状态
- 如何获取 MySQL 服务程序安装的路径
- MySQL 服务程序安装的路径是什么
- 该目录下还有其他相关程序吗做什么用的
- 如何查看 MySQL 客户端软件的进程
- 如何查看多个 MySQL 客户端的连接 id
- 如何查看服务器端线程数量,和 MySQL 客户端有什么关联
- 如何查看客户端软件安装路径
- MySQL 客户端软件安装路径是什么
- MySQL 客户端软件安装路径下还有其他 MySQL 相关程序吗
- 说出该目录下 MySQL 相关两三个软件的功能或作用
- 如何查看 MySQL 服务器软件和客户端软件的安装包
DBMS 的特色:数据独立性
- 举出几种模型的例子,尤其是课上没有提到的模型例子
- 什么是模型,什么是建模,为什么要建模,如何建模
- 都有哪些数据模型,这些数据模型都有什么特点
- 数据模型有哪些分类
- E-R 图是哪些单词的缩写,是上述哪种模型分类
- 数据库设计分几个阶段,每个阶段的交付物是什么
- 什么是模式
- C 语言的类型有哪些分类,类型的作用有哪些
- 变量的本质是什么
- 模式和类型的关系是什么
- 什么是模式,什么是实例
- 什么是数据库模式
- 数据库有哪三级模式,每层模式的名称有哪些,如何理解
- 什么是模式映射
- 为什么外模式有多个
- 三级模式有几种,模式映射如何理解,数据独立性如何理解
- 数据模型和数据库模式有什么联系
DBMS 的特色:数据库语言
- RDBMS 中有几种数据库语言,分别是什么
- SQL 是什么单词的缩写,中文什么意思
- SQL 程序与大多数高级编程语言的区别是什么
- SQL 有哪些分类,每种分类的作用是什么
- DDL 有哪些关键字
- DML 有哪些关键字
- DCL 有哪些关键字
- DQL 有哪些关键字
- DTL 有哪些关键字
- SQL 查询代码执行的三个阶段分别是什么
- 关系代数的意义和价值如何
- 关系代数的运算有哪些分类
- 每种类型下有哪些运算,其数学符号分别是什么
- 对应的运算效果是什么
- 关系是什么的集合
- 解释关系运算的封闭性
- 关系代数的集合运算跟传统的集合运算有何区别
- 那些关系代数运算是一元运算,哪些是二元运算
- E-R 图中的基本图形符号有哪些,分别代表什么
DBMS 的特色:事务处理
- 什么是事务并举例说明
- 事务的英文单词是什么,本意是什么
- 事务的四个特性分别是什么,简要说明每个特性的含义
- 用图示说明事务并发执行时可能会出现的几种异常情况
结构化查询语言
关系数据模型
- 关系数据模型的三要素是什么
- 关系数据模型核心结构是什么
- 表为什么称为关系
- 关系数据模型的结构中涉及哪些概念
- 关系数据模型的结构规律是什么
- 什么是码、超码、候选码、主码和外码
- 上述四种码中,哪些是约束
SQL 简介
- 简述 SQL 的起源
- 简述 SQL 的语法规则
- 简述 SQL 标准化的意义
SQL 编程
投影操作
- 写出投影操作的示例代码
- 如何查询常量
- 如何查询表中单个字段
- 如何查询表中多个字段
- 如何查询表中所有字段
- 如何查询表达式
- 如何查询函数
- 如何在查询中给字段重命名
- 如何在查询中去除重复数据
选择操作
- 写出选择操作的示例代码
- where 子句中有哪些条件运算符
- where 子句中如何组合多个条件运算符形成复杂的逻辑表达式
- where 子句中如何对字符串做模糊匹配,有哪些通配符
- where 子句中字符串通配符,想使用本身含义如何操作
- where 子句中如何判断等于 NULL 和不等于 NULL
- where 子句中如何判断取值在一个连续的范围内或范围外
- where 子句中如何判断取值在一个集合内或集合外
- 写出投影加选择操作的示例代码
排序和分页
- 排序子句的语法,排序的方向有几种,如何设置多个排序依据
- 分页子句的语法,给定页面如何计算偏移量
内置函数
- 常用的字符串函数有哪些
length
和char_length
函数的区别是什么- 常用的数学函数有哪些
- 常用的日期函数有哪些
- 常用的信息函数有哪些
- 常用的控制函数有哪些
- 写出
if
函数的参数 - 写出
case
函数的两种模板代码 - 常用的多行函数有哪些
- 单行函数与多行函数的区别是什么
集合操作
- 对两个表进行集合运算,有什么要求
- 交、并、差操作的 SQL 关键字分别是什么
分组汇总
- 分组汇总分哪两个动作
- 分组的本质是什么,分组最小极限是分几个组,分组最大极限是分几个组
- 分组使用的关键字是什么
- 分组依据字段是否可以有多个
- 分组汇总前过滤用什么关键字
- 分组汇总后过滤用什么关键字
- 分组汇总前、后过滤使用场景有什么不同
多表查询
- 设:
a(c1, c2, c3)
和b(c1, c4)
,其中a.c3
为 FK,b.c1
为 PK - 写出 a, b 笛卡尔积代码
- 写出 a, b 交叉连接代码
- 写出 a, b 内连接代码
- 写出 a, b 左外连接代码
- 写出 a, b 右外连接代码
- 写出 a, b 全外连接代码
- 写出 a, b 自然连接代码
- 写出 a, b 笛卡尔积实现的内连接代码
- 写出 a, b 左外连接,且只包含 a 中不符合连接条件的元组代码
- 写出 a, b 右外连接,且只包含 b 中不符合连接条件的元组代码
- 写出 a, b 全外连接,且不包含内连接的元组代码
嵌套查询
- 嵌套查询的本质
- 按子查询结果的特点分哪些类型
- 按子查询出现的位置分哪些类型
- 什么是关联子查询
in, not in
关键字的作用是什么any/some/all
关键字的作用是什么exists
关键字的作用是什么
DDL
- 写出创建数据库的代码
- 写出从头创建表的代码
- 写出复制已有表的代码
- 写出修改表的代码(添加字段、修改字段、删除字段)
- 写出两种修改表名的代码
- 写出删除表的代码
- 写出两种清空表数据的代码
DML
- 写出插入单条记录的代码
- 写出插入多条记录的代码
- 写出将查询结果插入表的代码
- 写出修改多个字段的代码
- 写出删除表数据的代码
- 更新表报错的可能原因有哪些
- 举例使用“子查询”来“更新”(增、删、改)表
数据类型
- 数值类型有哪些分类
- 整数类型有哪些不同的类型?关键字是什么?占用的存储空间分别是多少
- 多种整数类型,选择的依据是什么
- 整数型 (M),M 表示什么
unsigned
关键字的作用是什么zerofill
关键字的作用是什么- 浮点类型有哪些不同的类型?关键字是什么?占用的存储空间分别是什么
- 小数型 (M,D),M 和 D 分别表示什么
- 定点数类型的关键字是什么
- 浮点数和定点数在精度上和存储上有什么区别
- 二进制位类型的关键字是什么
- 将二进制数显示为二进制和十六进制的函数分别是什么
- 二进制位类型的数据
select
查询时,不显示的原因是什么 char
和varchar
的区别是什么timestamp
和datetime
类型的区别是什么- 如何在插入表数据时自动给时间戳赋值当前时间
约束
- 约束分哪两大类
- 完整性约束的作用是什么
- 安全性约束的作用是什么
- 完整性约束按功能分哪几类,MySQL 用什么方式实现
- 完整性约束按属性个数分哪几类
- 完整性约束按定义出现的位置分哪几类
- 添加完整性约束的方式分哪两种
- 外键约束的约束等级有哪些
- .
not null
约束可以是表级约束吗- 用两种方式添加
not null
约束 - 写出查看
not null
约束的代码 - 是否可以用
information_schema
库来查看not null
约束 - 写出删除
not null
约束的代码 - .
- 设置了
unique
约束的属性,其值是否可以为null
- 用两种方式添加
unique
约束 - 写出查看
unique
约束的代码 - 是否可以用
information_schema
库来查看unique
约束,如何查看 - 写出删除
unique
约束的代码 unique
约束的默认名称是什么- 多列约束可以是列级约束吗
- .
primary key
约束的默认名称是什么- 用两种方式添加
primary key
约束 - 写出查看
primary key
约束的代码 - 写出删除
primary key
约束的代码 - .
- 用两种方式添加
foreign key
约束 - 写出删除
foreign key
约束的代码
视图
- 说明视图和表的区别
- 写出创建视图的代码
- 写出两种修改视图的代码
- 写出删除视图的代码
- 说明修改视图数据的本质
- 说明修改视图数据不成功的几种原因
- 写出查看视图的代码
- 查看视图对象
- 查看创建视图的代码
- 查看视图表结构
- 查看视图数据
存储过程
- 写出创建存储过程的代码
- 说明存储过程的参数类型分哪几类,对应的关键字
- 存储过程的出口参数,在内部如何赋值
- 写出调用存储过程的代码
- 写出查看存储过程的代码
- 写出修改存储过程的代码
- 写出删除存储过程的代码
存储函数
- 写出创建存储函数的代码
- 写出调用存储函数的代码
- 写出查看存储函数的代码
- 写出修改存储函数的代码
- 写出删除存储函数的代码
触发器
- 写出创建触发器的代码
- 写出查看触发器的代码
- 写出删除触发器的代码
- 触发器中访问元组的关键字
- 存储过程、函数和触发器的相同和不同之处
变量
- MySQL 变量分哪两大类
- 系统变量分那两大类,对应的关键字分别是什么,有什么区别
- 用户变量分哪两大类,有什么区别
- 写出查看所有全局系统变量的代码
- 用两种方式,写出查看某个具体的全局系统变量的代码
- 写出给全局系统变量赋值的代码
- 写出查看所有会话系统变量的代码
- 用两种方式,写出查看每个具体的会话系统变量的代码
- 写出给会话系统变量赋值的代码
- 用两种方式写出给用户会话变量赋值的代码
- 写出查看用户会话变量的代码
- 写出声明用户局部变量的代码
流程控制
- 写出
if
流程控制的代码 - 写出
case
流程控制的代码 - 写出
loop
循环控制的代码 - 写出
repeat
循环控制的代码 - 写出
while
循环控制的代码 leave
关键字的作用是什么interate
关键字的作用是什么
游标
- 写出游标操作的代码,包括
- 声明游标
- 打开游标
- 在循环体中,获取游标中的数据
- 关闭游标
DCL
- 写出创建用户的代码
- 写出查看用户的代码
- 写出修改用户名的代码
- 写出修改用户密码的代码
- 写出锁定用户的代码
- 写出删除用户的代码
- 写出查看所有权限列表的代码
- 写出赋予用户权限的代码
- 写出查看用户权限的代码
- 写出收回用户权限的代码
- 两个哈希函数分别是什么
- 加密和解密函数分别是什么
- SQL 注入的原理是什么
关系代数
- 略
概念数据库设计
- 什么是(强)实体
- 实体、实体型和实体集的区别是什么
- 实体型的 E-R 图形符号是什么
- 什么是弱实体
- 弱实体型的 E-R 图形符号是什么
- 什么是简单属性
- 实体属性有哪些分类,对应的 E-R 图形符号是什么
- 什么是联系
- 联系、联系型和联系集的区别是什么
- 联系型的 E-R 图形符号是什么
- 什么是联系的度
- 什么是联系的基数比,有哪些不同的联系基数比,图形符号
- 什么是联系的参与度,有哪些不同的联系参与度,图形符号
- 什么是角色,用在什么场合
- 什么是标识实体型
- 什么是标识联系型
- 什么是超类和子类
- 什么是重叠子类和不相交子类
- 什么是全部特化和部分特化
逻辑数据库设计
- 说明 E-R 模型到模式的转换规则
- 强实体型和简单属性
- 复合属性
- 多值属性
- 键属性
- 派生属性
- 弱实体型
- M 联系型
- N:1 联系型
- 1:1 联系型
- 标识联系型
- 评价模式好坏的标准是什么
- 不好的模式会带来什么问题
- .
- 什么是数据依赖
- 数据依赖有哪几种,作用分别是什么
- 什么是函数依赖
- 函数依赖分哪几种
- 什么是平凡函数依赖
- 什么是不平凡函数依赖
- 什么是完全函数依赖
- 什么是部分函数依赖
- 什么是传递函数依赖
- 利用函数依赖如何定义候选键
- 什么是主属性,什么是非主属性
- 什么是逻辑蕴含
- Armstrong 公理的作用是什么
- Armstrong 公理的内容是什么
- Armstrong 公理的导出规则是什么
- 利用 Armstrong 公理证明三个导出规则
- 属性集闭包的作用是什么
- 属性集闭包的定义是什么
- 如何计算属性集闭包
- 函数依赖集等价的作用是什么
- 什么是函数依赖集闭包
- 什么是函数依赖集覆盖
- 什么是等价函数依赖集
- 如何判断函数依赖集等价
- 最小覆盖的作用是什么
- 如何计算最小覆盖
- .
- 1NF 的定义是什么
- 2NF 的定义是什么
- 3NF 的定义是什么
- BCNF 的定义是什么
- .
- 模式分解的作用是什么
- 模式分解可能带来的问题是什么
- 模式分解的准则是什么
- 如何判断无损连接性
- 如何判断函数依赖保持性
物理数据库设计
- 什么是索引
- 索引按是否在主键属性上创建索引,分哪两种
- 索引按是否在唯一值属性上创建索引,分哪两种
- B+ 树叶子节点是否包含完整的记录,索引分哪两种
- 索引的属性是否为单个属性,分为哪两种
- 创建索引按建表的时间不同,分哪两种创建方式
- 写出上面两种创建索引的代码
- 建表时有哪几种情况会隐式创建索引,分别会创建哪种索引
- MySQL 的 innodb 存储引擎和 MyISAM 存储引擎的 B+ 树索引有什么区别
- innodb 存储引擎是否可以为一个表创建多个聚簇索引,为什么
- 二级索引是如何工作的,为什么也称为辅助索引
- 写出修改表添加索引的代码
- 写出直接创建索引的代码
- 写出查看索引的代码
- 写出删除索引的代码
- MySQL 中常用的索引数据结构是哪两种,默认的是哪种
- 如何在创建索引的代码中指定索引的数据结构类型
- B+ 树索引的特点是什么
- B+ 树的多路是什么含义,有什么好处
- B+ 树的平衡是什么含义,有什么好处
- B+ 树叶子节点的双向链表有什么作用
- B+ 树节点的数据结构是什么
- 什么是区分度,如何计算某个表中某字段的区分度
- 编写为变长字符串字段创建前缀索引的代码
- 联合索引和多个单属性索引哪种更好,为什么
- 索引过多会有哪些不利影响
- 建表时添加某些约束会自动隐式创建索引,请说明原因
存储管理
- 绘制计算机存储介质天梯图
- 计算机存储介质分哪几大类
- 不同类型的存储介质,操作数据的单位有何不同
- 不同类型的存储介质,操作数据的效率有何不同
- .
- MySQL 存储引擎的作用是什么
- 如何在 DDL 中指定存储引擎
- 如何查看 MySQL 支持的所有存储引擎
- MySQL 有哪些常用的存储引擎
- 如何查看某个表使用的存储引擎
- MySQL 默认使用的存储引擎是什么
- 如何查看 MySQL 默认的存储引擎
- 不同的存储引擎有什么区别,适用于什么场合
- 如何选择存储引擎
- MySQL 哪种存储引擎支持哈希索引
- .
- MySQL 支持几种行格式
- MySQL 默认的行格式是哪种
- 如何查看 MySQL 的默认行格式
- 如何查看某个表所使用的行格式
- 如何在 DDL 中指定行格式
- 不同行格式之间的区别是什么
- compact 行结构是什么
- 绘制 compact 行格式示意图
- .
- MySQL 页的作用是什么
- MySQL 默认的页尺寸是多少
- 如何查看 MySQL 默认的页尺寸
- MySQL 页结构是什么
- MySQL 常见的页的类型有哪些
- MySQL 的记录保存在哪种类型的页中
- MySQL 中记录和记录之间通过什么导航
- MySQL 中页和页之间通过什么导航
- MySQL 索引页中如何实现用户记录的快速查找
- 绘制页结构示意图
- .
- 什么区,作用是什么
- 什么是段,作用是什么
- 什么是表空间,作用是什么
- MySQL 有哪些表空间
- 如何查看表空间文件的存储路径
- 如何查看 MySQL 是否启用了独立表空间
- .
- 绘制 B+ 树示意图
- 绘制聚簇索引和非聚簇索引的 B+ 树示意图
索引结构
- memory 存储引擎默认的索引结构是什么
- innodb 存储引擎默认的索引结构是什么
- B+ 树的节点分哪三类,数据结构如何
- M 路 B+ 树,索引项数量最多为多少
- M 路 B+ 树,节点中索引项数量半满为多少
- 描述 B+ 树等值查找的过程
- 描述 B+ 树范围查找的过程
- 描述 B+ 树插入(不发生页分裂和发生页分裂)的过程
- 描述 B+ 树删除(直接删除、发生索引重排和发生页合并)的过程
- B+ 树非根节点要求半满,好处是什么,缺点是什么
- 解释一下前缀压缩和后缀截断的原理和动机
- 为什么哈希索引不支持范围检索和部分索引属性检索
- 静态哈希表和动态哈希表的区别是什么
- 动态哈希表中全局深度和本地深度,两个参数的作用是什么
- 动态哈希表中桶的数量如何计算
- 动态哈希表,如何根据 key 定位桶编号
- 动态哈希表,扩展桶数量的时机是什么,扩展的数量是多少
- 线性哈希表中 nθb 表达式代表什么,每个参数分别代表什么
- 线性哈希表,如何根据 key 定位桶编号
- 线性哈希表,扩展桶数量的时机是什么,扩展的数量是多少
查询执行
- 一个 SQL 查询语句提交到 DBMS 得到查询结果,经历哪些大的步骤
- 查询解析器和转换器的作用是什么
- 查询优化器的作用是什么
- 查询执行器的作用是什么
- .
- 缓冲池的作用是什么
- 缓冲池中的页表作用是什么
- 缓冲区管理器中的两个变量是什么,作用是什么
- 针对不同场景,分别描述页请求的过程
- 情况 1:被请求页在缓冲池中
- 情况 2:被请求页不在缓冲池,但缓冲池有空闲页框
- 情况 3:被请求页不在缓冲池,但缓冲池无空闲页框,且有 ping_count 为零的页
- 情况 4:被请求页不在缓冲池,但缓冲池无空闲页框,且所有页 ping_count 大于零
- 什么是页替换策略
- 描述 LRU 页替换策略
- 描述时钟替换策略
- 缓冲区管理预取的作用是什么,预取的操作过程如何
- DMBS 缓冲区管理和操作系统的虚拟内存管理有什么异同
- 为什么不能用操作系统的虚拟内存管理来管理 DBMS 的缓冲区
- .
- 举出 DBMS 排序操作的场景
- 什么是外排序
- 如何近似计算 DBMS 中外排序算法的时间复杂度,理由如何
- 两趟多路归并排序算法的两趟是什么,多路是什么,归并是什么
- 两趟多路归并排序算法的时间复杂度和空间复杂度分别是多少,说明计算依据
- 多趟多路归并排序的前提是什么
- 双缓冲对两趟多路归并排序的改进点是什么
- .
- 选择运算有几种不同的执行算法,不同执行算法的应用场景是什么
- 描述基于扫描的选择算法
- 基于扫描的选择算法的时间复杂度和空间复杂度如何
- 描述基于哈希索引的选择算法
- 基于哈希索引的选择算法的时间复杂度和空间复杂度如何
- 描述基于 B+ 树索引的选择算法
- 基于 B+ 树索引的选择算法的时间复杂度和空间复杂度如何
- .
- 描述不带去重投影的算法
- 不带去重投影算法的时间复杂度和空间复杂度如何
- .
- 写出去重运算的关系代数运算符和表达式
- 去重运算有几种不同的执行算法,不同执行算法的应用场景什么
- 【待补充】
查询优化
- 查询优化的两个阶段分别是什么
- 逻辑查询优化做什么
- 物理查询优化做什么
- 逻辑查询优化的两种方法分别是什么,有什么区别
- 何为关系代数表达式的等价
- 关系代数表达式的等价变换需要借助什么完成
- 有哪两个启发式规则
- 描述选择下推启发式规则
- 描述选择下推启发式规则
- 启发式规则和代价式规则优化的方向是否一致
- 查询代价是什么,查询代价是否是查询执行的真实时间
- 不同的查询,查询代价的比较有意义吗
- 查询代价用什么来度量
- 查询代价的计算有什么要求
- 查询代价估算的前提假设是什么
- 查询代价的估算基于哪两个统计信息
- MySQL 更新表统计信息的语句是什么
- 【待补充】
并发控制
- 启动事务、提交事务和回滚事务的 SQL 关键字是什么
- 什么叫事务结束
- 事务 COMMIT 了,意味着什么
- 事务 ABORT 了,意味着什么
- 什么情况下事务的执行会破坏原子性,如何避免
- 什么情况下事务的执行会破坏持久性,如何避免
- 如何理解事务的一致性
- 事务的执行有哪两种方式,哪种方式可能会破坏事务的隔离性
- 多个事务并行执行的好处有哪些,缺点有哪些
- 什么是调度
- 调度分哪两类,哪一类是研究重点
- 调度的正确性如何判断
- 任意串行调度是否都能保证数据库的一致性
- 非串行调度是不正确的调度,说法是否正确
- 非串行调度导致事务的异常有哪些
- 什么是脏写
- 什么是脏读
- 什么是不可重复读
- 什么是幻读
- 什么是等价调度
- 什么是可串行化调度,可串行化调度是串行化调度吗
- 既然事务要满足隔离性,那么为什么还要有事务的隔离级别
- 在 read committed 隔离级别下能否得到可串行化调度
- 为什么 DBMS 使用的是冲突可串行化
- SQL-92 定义的四种隔离级别分别是什么,这四种隔离级别的隔离程度如何变化
- 四种隔离级别分别解决哪些非串行调度的异常
- 冲突可串行化调度中冲突是何意,有几种冲突形式
- 如何判断一个调度是否为冲突可串行化调度
- 锁的分类
- 写出共享锁和互斥锁的相容性矩阵
- 解释两阶段锁
- 解释死锁
- 【待补充】
故障恢复
- 有哪些不同类型的故障
- 分别描述每种故障
- undo 和 redo 的作用分别是什么
- undo 和 redo 需要其一、其二还是都不要,取决于什么
- DBMS 缓存池管理策略有哪些
- 从两方面比较上述策略的优劣,I/O 效率,缓存池效率
- WAL 是什么
- WAL 协议是什么
- 基于 WAL 如何故障恢复
- 根据日志将事务分成哪三类
- 不同类型的事务如何故障恢复
- WAL 协议分哪几类,分别对应什么日志类型
- 【待补充】