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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章