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 的优势

在这里插入图片描述

二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树

MySQL B + Tree 具体落地形式

MySQL数据库1个库允许有多个存储引擎的表,常见的就是InnoDB、Myisam。在这里插入图片描述

Myisam

在这里插入图片描述
在这里插入图片描述

InnoDB

在这里插入图片描述
在这里插入图片描述

InnoDB VS Myisam

在这里插入图片描述

索引的几大原则

列的离散性

在这里插入图片描述

最左匹配原则

在这里插入图片描述

联合索引

在这里插入图片描述
在这里插入图片描述

覆盖索引

在这里插入图片描述
在这里插入图片描述

二、MySQL 优化

链接: https://pan.baidu.com/s/1kWW5Jymaob1ypRsoP2xfNg 提取码: 4wg6

posted @ 2020-05-11 13:41  leigq  阅读(156)  评论(0编辑  收藏  举报