categories: mysql
mysql 常识
1 数据库架构
关系型数据库主要考点
- 架构
- 索引
- 锁
- 语法
-
如何设计一个关系型数据库(从查询器、解析器、缓存器、执行器等解释也可以,binlog、redo log等)
首先设计成两大部分,一个是存储部分,该部分类似一个文件系统来将数据持久化到存储设备当中;程序实例模块来对存储进行逻辑上的管理,包含上图中的八个模块。具体模块可以展开说一下自己的理解。索引模块
为什么要使用索引?
全表扫描,轮询块。数据量大的利用索引较好,以此来避免全表扫描,灵感来自于字典。快速查询数据
- 什么样的信息能成为索引?
主键、唯一键以及普通键等。
- 索引的数据结构
生成索引,建立二叉查找树进行二分查找;生成索引,建立B-Tree 结构进行查找;生成索引,建立B+-Tree 结构进行查找(MySQL的主要实现方式);生成索引,建立 Hash 结构进行查找;
- 密集索引和稀疏索引的区别?
https://www.cnblogs.com/liermao12/p/10504120.html
2 优化你的索引-运用二叉查找树
二叉查找树上阵
主要是介绍相关数据结构的基本知识,二叉查找树、平衡二叉树、二分查找等,为了减少 IO 操作,需要让树矮一些,方便块数据的使用
3 优化你的索引-运用B树
3 阶 B 树
- 根节点至少包括两个孩子
- 树中每个节点最多含有 m 个孩子(m >= 2)
- 除根节点和叶节点外,其他每个节点至少有 ceil(m/2) 个孩子(ceil 指取上限)
- 所有叶子节点都位于同一层
限制大小,通过下图的方式:
B 树的合并,插入,具体实现,需要在数据结构中好好学习。
4 优化你的索引-运用B+树
B+ 树是 B 树的变体,其定义基本与B树相同,除了
- 非叶子节点的子树指针与关键字个数相同
- 非叶子节点的子树指针 p[i],指向关键字值大小在 [k[i], k[i+1]) 的子树
- 非叶子节点仅用来索引,数据都保存在叶子节点中
- 所有叶子节点均有一个链指针指向下一个叶子节点
B+ Tree 更适合用来做存储索引
- B+ 树的磁盘读写代价更低
- B+ 树的查询效率更加稳定
- B+ 树更有利于对数据库的扫描