春招复习之数据库MySQL

一、复习要点罗列

1.存储引擎是什么?知道哪些存储引擎?各自特点?

  • InnoDB:默认事务型存储引擎,引入行级锁定,适用于:事务、更新密集、自动灾难恢复、外键约束、支持自动增加列AUTO_INCREMENT。
  • MyISAM:独立于操作系统的,每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表名,三个文件分别存储表的定义、数据 和 索引。适用于:选择密集型 、插入密集型 的表,允许同时选择和插入数据。
  • MEMORY:速度 。响应最快存在系统内存中。但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。 存的数据必须是长度不变的。适用于目标数据较小、临时、立即可用。同时支持散列索引和B树索引。
  • MERGE:是一组MyISAM表的组合。
  • Archive(阿凯v),在记录被请求时会实时压缩,做仓库使用。
        

2.事务的概念?事务的几大特性?

事务:逻辑单元执行的一系列操作。

4个特性:

  • 原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行一部分操作。
  • 一致性(Consistency):数据库在任何时候都保持一致的状态——在每次提交或回滚之后,以及在事务进行期间。如果跨多个表更新相关数据,查询将看到所有旧值或所有新值,而不是新旧值的混合。——来自MySQL官方文档。
  • 隔离性(Isolation):一个事务所做的修改操作在提交事务之前,对于其他事务来说是不可见的。
  • 持久性(Durability):一旦事务提交,则其所做的修改会永久保存到数据库。

3.数据库是如何执行查询操作的?

    行格式以 Compact 为例,分为额外信息和真实数据。
    页是MySQL中磁盘和内存交互的基本单位.,专门存储数据的页——数据页。数据页中要把记录分组,每个组都是一个单链表,自动添加的两个行为 ”最小“ 和 ”最大“ ,每个组不超过 8 个记录。
槽【每个组里主键值最大的那条记录的地址偏移量,所有的槽放在页目录中】-二分法:从页目录定位槽,通过上一个槽的下一条就可以取得定位槽的最小值,遍历槽中记录即可,不超过 8 ,开销不大。
春招复习之数据库MySQL

4.能做哪些优化?

5.MySQL的B+树索引 / 聚簇索引 / B+树与B树?

    所有的数据页会组成一个双链表。为每一个数据页生成一个页目录项记录,也叫 ”索引“ :本页所有记录中的最小主键值 key 与 页码 page_no。
春招复习之数据库MySQL
    如果是以x列值作为依据,那么目录项记录只有两列:x值和页数page_no,而生成叶子节点时只有主键值和x值,因此,如果要查找所有的数据,需要到表中通过主键值进行查找—— ”回表“。依据非主键列值建立的B+树叫”二级B+树“、”辅助索引“。

    MyISAM引擎,数据与索引是分开存储的。将表中的记录按照记录的插入顺序单独存储在数据文件中。而索引文件,是为主键创建索引,B+树的叶子节点不是具体数据记录,而是主键值或列值与对应的行数,接下来是根据行偏移量到数据文件中进行查询的。

聚簇索引:
(1)使用记录主键值的大小进行记录和页的排序
(2)B+树的叶子节点存储的是完整的用户记录。

    B树中关键字分布在整棵树中,而B+树关键字集合分布在叶子结点中,非叶节点只是叶子结点中关键字的索引