mysql数据结构_mysql的底层数据结构
一.數據結構
1.?二叉樹
特點:左側子節點比父節點小,右側子節點比父節點大(對于同一個父節點下的兩個子節點)
缺點:對于一直遞增得數據不能存在該數據結構中,會變成鏈表,不能降低樹的高度
圖 1-1
?
圖1-2
2.?紅黑樹
特點:左側子節點比父節點小,右側子節點比父節點大、或者相等(對于同一個父節點下的兩個子節點),對于一直遞增的數據可以自動平衡
缺點:對于百萬條數據,樹的高度還是太高
3.?Hash表
優點:對數據進行Hash(散列)運算,主流的Hash算法有MD5、SHA256等等,然后將哈希結果作為文件指針可以從索引文件中獲得數據的文件指針,再到數據文件中獲取到數據,按照這樣的設計,我們在查找where Col2 = 22的記錄時只需要對22做哈希運算得到該索引所對應那行數據的文件指針,從而在MySQL的數據文件中定位到目標記錄,查詢效率非常高。
缺點:無法解決范圍查詢(Range)的場景,比如 select count(id) from sus_user where id>10;因此Hash這種索引結構只能針對字段名=目標值的場景使用。不適合模糊查詢(like)的場景
4.?B-樹
特點:葉節點具有相同的深度,葉節點的指針為空,所有索引元素不重復,節點中的數據從左到右遞增排列
缺點:存儲的數據量沒有B+樹多,B樹不支持range-query
(區間查詢)
? ? ? ? ? ? ? ? ?
圖1-3
5.?B+樹
特點:非葉子節點不存儲data,只存儲索引(冗余),可以放更多的索引,葉子節點包含所有索引字段,葉子節點用指針鏈接,提高區間訪問的性能。
與B-樹對比:B+樹有一個最大的好處,方便掃庫,B樹必須用中序遍歷的方法按序掃庫,而B+樹直接從葉子結點挨個掃一遍就完了,B+樹支持range-query(區間查詢)非常方便,而B樹不支持。
?
圖 1-4
總結
以上是生活随笔為你收集整理的mysql数据结构_mysql的底层数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 财会专用计算机,一种财会专用计算机的制作
- 下一篇: hive load data外部表报错_