跳转到内容

课堂测验

使用说明:

  • 推荐使用 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 子句中如何判断取值在一个集合内或集合外
  • 写出投影加选择操作的示例代码

排序和分页

  • 排序子句的语法,排序的方向有几种,如何设置多个排序依据
  • 分页子句的语法,给定页面如何计算偏移量

内置函数

  • 常用的字符串函数有哪些
  • lengthchar_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 查询时,不显示的原因是什么
  • charvarchar 的区别是什么
  • timestampdatetime 类型的区别是什么
  • 如何在插入表数据时自动给时间戳赋值当前时间

约束

  • 约束分哪两大类
  • 完整性约束的作用是什么
  • 安全性约束的作用是什么
  • 完整性约束按功能分哪几类,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 协议分哪几类,分别对应什么日志类型
  • 【待补充】