categories: mysql


mysql 常识

1 数据库架构

主讲过程

关系型数据库主要考点

  • 架构
  • 索引

  • 语法
  • 理论范式

    如何设计一个关系型数据库(从查询器、解析器、缓存器、执行器等解释也可以,binlog、redo log等)

    image.png
    首先设计成两大部分,一个是存储部分,该部分类似一个文件系统来将数据持久化到存储设备当中;程序实例模块来对存储进行逻辑上的管理,包含上图中的八个模块。具体模块可以展开说一下自己的理解。

    索引模块

  • 为什么要使用索引?

全表扫描,轮询块。数据量大的利用索引较好,以此来避免全表扫描,灵感来自于字典。快速查询数据

  • 什么样的信息能成为索引?

主键、唯一键以及普通键等。

  • 索引的数据结构

生成索引,建立二叉查找树进行二分查找;生成索引,建立B-Tree 结构进行查找;生成索引,建立B+-Tree 结构进行查找(MySQL的主要实现方式);生成索引,建立 Hash 结构进行查找;

  • 密集索引和稀疏索引的区别?

https://www.cnblogs.com/liermao12/p/10504120.html

2 优化你的索引-运用二叉查找树

主讲过程

二叉查找树上阵

主要是介绍相关数据结构的基本知识,二叉查找树、平衡二叉树、二分查找等,为了减少 IO 操作,需要让树矮一些,方便块数据的使用

3 优化你的索引-运用B树

主讲过程

3 阶 B 树

image.png

  • 根节点至少包括两个孩子
  • 树中每个节点最多含有 m 个孩子(m >= 2)
  • 除根节点和叶节点外,其他每个节点至少有 ceil(m/2) 个孩子(ceil 指取上限)
  • 所有叶子节点都位于同一层

限制大小,通过下图的方式:
image.png
B 树的合并,插入,具体实现,需要在数据结构中好好学习。

4 优化你的索引-运用B+树

主讲过程

B+ 树是 B 树的变体,其定义基本与B树相同,除了

  • 非叶子节点的子树指针与关键字个数相同
  • 非叶子节点的子树指针 p[i],指向关键字值大小在 [k[i], k[i+1]) 的子树
  • 非叶子节点仅用来索引,数据都保存在叶子节点中
  • 所有叶子节点均有一个链指针指向下一个叶子节点

image.png

B+ Tree 更适合用来做存储索引

  • B+ 树的磁盘读写代价更低
  • B+ 树的查询效率更加稳定
  • B+ 树更有利于对数据库的扫描