MySQL学习提升
一、深入MySQL B + Tree索引机制
链接: https://pan.baidu.com/s/1YjSI2jKChUAKFfjUJVoP8w 提取码: 900g
课程安排
索引的定义
InnoDB 是 Mysql 的默认存储引擎(Mysql5.5.5之前是MyISAM,文档)。InnoDB 中的所使用的是 B+tree 的数据结构,上图中是 Hash 数据结构,不是 InnoDB 存储引擎。
为什么MySQL会选择 B + Tree 这种数据结构?
计算机科学中的树有很多种,这里只讲几个常见的。
数据结构模拟:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
来看看查询算法的数据结构的演进:
二叉查找树
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。
平衡二叉查找树
平衡二叉查找树是为了解决二叉查询书数据不均匀而导致线性数据结构的问题而产生的。
平衡二叉搜索树(英语:Balanced Binary Tree)是一种结构平衡的二叉搜索树,即叶节点高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。它能在O(log n)内完成插入、查找和删除操作,最早被发明的平衡二叉搜索树为AVL树。
常见的平衡二叉搜索树有:
- AVL树
- 红黑树
- Treap
- 节点大小平衡树
AVL树
在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL树得名于它的发明者G. M. Adelson-Velsky和Evgenii Landis,他们在1962年的论文《An algorithm for the organization of information》中公开了这一数据结构。
红黑树
红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在Leo J. Guibas和Robert Sedgewick于1978年写的一篇论文中获得的。
平衡多路查找树(B-Tree)
多路故名思议就是有多个分叉,上图是以3叉为例,也就是每个节点最多分3叉,节点上面的关键字个数为:叉路数 - 1,这里是为2个关键字,那如果当关键字的个数超过2个时,关键字就会发生分裂,而后合并,使其保持2个,如下图:
B+Tree
MySQL索引采用的是 B + Tree 数据结构
B + Tree 的特点
B + Tree 的优势
MySQL B + Tree 具体落地形式
MySQL数据库1个库允许有多个存储引擎的表,常见的就是InnoDB、Myisam。
Myisam
InnoDB
InnoDB VS Myisam
索引的几大原则
列的离散性
最左匹配原则
联合索引
覆盖索引
二、MySQL 优化
链接: https://pan.baidu.com/s/1kWW5Jymaob1ypRsoP2xfNg 提取码: 4wg6
作者:不敲代码的攻城狮
出处:https://www.cnblogs.com/leigq/
任何傻瓜都能写出计算机可以理解的代码。好的程序员能写出人能读懂的代码。