mysql体系架构
索引系统
数据存储系统
mysql用哈希表为什么不行?
mysql的数据结果是b+树的解释说明
- 二分查找树的数据结构
- 二分查找树:树的子节点最多是两个,并且左子树小于根节点,右子树大于根节点
- 如果我们的数据是有序的话,那么二分查找树就会成为一个链表
- 所以衍生出了平衡二叉树
- 平衡二叉树的数据结构
平衡二叉树的概念:
平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。常见的符合平衡树的
有,B树(多路平衡搜索树)、AVL树(二叉平衡搜索树)等。平衡树可以完成集合的一系列操作,
时间复杂度和空间复杂度相对于“2-3树”要低,在完成集合的一系列操作中始终保持平衡,为大型数
据库的组织、索引提供了一条新的途径
- 平衡二叉树图析:
相对于二分查找树来说,树的高度小了很多,
平衡树的不足:
插入一个树的时候,需要比较,转换,消耗的时间会很长,适合查找情况多的部分,如果大部分业务时写操作的话,会效率很低。
因此衍生出了红黑树
- 红黑树数据结构
红黑树的概念
性质1. 节点是红色或黑色。
性质2. 根节点是黑色。
性质3.所有叶子都是黑色。(叶子是NIL节点)
性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
性质5… 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
- 红黑树的图析
红黑树的不足:
当数据量大的时候,树的深度会很深,查找效率会变差
衍生出了B树
- B树
B树的概念
在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree),可以拥有多于2个子节点。
与自平衡二叉查找树不同,B树为系统大块数据的读写操作做了优化。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。
- b树的图析
B树他的节点可以存放多个数据
B树的不足:
当查询大量连续数据的时候,需要回旋次数很多,这样的话,该让查找效率变低
衍生出了B+树
- B+树
B+树的概念
B+树:有两个指针,一个指向根节点,另一个指向关键字最小得叶子节点,而且所有得叶子节点之间也是一种链式环结构,
因此:B+树:有两种查找运算,一种是主键得范围查找和分页查找,另一种是从根节点开始,进行随机查找。
- B+树的图解
B+树在B树的基础上,让查找大批连续数的时候,不用再多次回旋查找了,提高了效率
所以:mysql的数据结果时B+树
索引的概念
匹配的查询可以通过索引快速定位到指定的数据
- mysql索引的种类
一般情况下,sql语句中尽可能多的带主键字段,方便查询,但是主键字段的条件一定会生效嘛?
不一定
回表:
- mysql 索引B+树的层数
- mysql Innodb – B+Tree
- mysql myisam-- B+Tree
- 聚簇索引和非聚簇索引
聚簇索引:数据和索引时放在一起的
一个表的聚簇索引一定是主键索引嘛?不一定
因为:当一个表有主键的时候,他的聚簇索引就是主键,如果没有的话,那聚簇索引就是他的唯一
键,如果没有唯一键的话,就是low-id
一个表的聚簇索引有多个嘛?只有一个
主键索引一定是聚簇索引嘛?假如说创建表的时候没有主键,没有唯一键,添加数据之后,设置了主键?
- innodb主键聚簇,myisam非聚簇
- innodb的普通列索引是非聚簇。
- sql语句中如何使用索引