mysql 怎么创建B Tree索引_MySQL为什么选择B+Tree做索引
MySQL為什么選擇B+Tree?
首先理解MySQL索引的幾個原則
是為了加速對表中數據行的檢索而創建的一種分散存儲的數據結構。
工作機制
如上圖:以id創建索引,索引數據結構里存儲了索引鍵(關鍵字)以及對應的值(地址值),當搜尋id=101的數據時,直接找到對應的地址0x123456。時間復雜度為O(1)。
時間復雜度
二叉查找樹
二叉樹測試地址:
https://www.cs.usfca.edu/~galles/visualization/BST.html
二叉樹缺點:
二叉樹缺點
平衡二叉查找樹
每一個節點與子節點的高度差不能大于1。
平衡二叉樹測試地址:
https://www.cs.usfca.edu/~galles/visualization/AVLtree.html
二叉樹缺陷:
搜索時IO次數過多,節點數據內容太多。
多路平衡二叉樹
多路平衡二叉樹測試地址:
https://www.cs.usfca.edu/~galles/visualization/BTree.html
經常變化的字段不要建索引,對B樹的維護不好。B樹的合并和分裂對性能有損耗。
B+Tree
左閉合區間,id從小到大的遞增。數據變動可能是最右邊的變動 。
MySQL使用B+Tree的原因:
B+Tree掃庫、掃表能力更強。
B+Tree的磁盤讀寫能力更強。
B+Tree的排序能力更強。
B+Tree的傳效率更穩定。
兩種類型的表:
兩種類型的表
兩種表的存儲文件類型:
存儲的文件
索引用Hash算法的缺點:
無法范圍查詢
無法排序
InnoDB采取的?式是:將數據劃分為若?個?,以?作為磁盤和內存之間交互的基本單位,InnoDB 中?的???般為 16 KB。也就是在?般情況下,?次最少從磁盤中讀取16KB的內容到內存中,?次最少把內存中的16KB內容刷新到磁盤中
我們的實際?戶記錄其實都存放在B+樹的最底層的節點上,這些節點也被稱為葉?節點或葉節點,其余?來存放?錄項的節點稱為?葉?節點或者內節點,其中B+樹最上邊的那個節點也稱為根節點。
假設所有存放?戶記錄的葉?節點代表的數據?可以存放100條?戶記錄,所有存放?錄項記錄的內節點,代表的數據?可以存放1000條?錄項記錄,那么:
如果B+樹只有1層,也就是只有1個?于存放?戶記錄的節點, 最多能存放100條記錄。
如果B+樹有2層,最多能存放1000×100=100000條記錄。
如果B+樹有3層,最多能存放1000×1000×100=100000000條記錄。
歡迎關注個人公眾號:【Lvshen_9】? 交流技術
總結
以上是生活随笔為你收集整理的mysql 怎么创建B Tree索引_MySQL为什么选择B+Tree做索引的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MDT部署双硬盘选择
- 下一篇: linux cmake编译源码,linu