婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL的索引系統采用B+樹的原因解析

MySQL的索引系統采用B+樹的原因解析

熱門標簽:云南電商智能外呼系統價格 400電話可以辦理嗎 臨清電話機器人 高清地圖標注道路 拉卡拉外呼系統 外東北地圖標注 大眾點評星級酒店地圖標注 智能外呼系統復位 話務外呼系統怎么樣

1.什么是索引?

索引是為了加速對表中數據行的檢索而創建的一種分散的存儲結構。(就好像我們小時候用的字典,有了字典查到對應的字就會變快)

2.為什么需要索引?

首先我們需要了解一些概念和知識

  1. mysql數據存儲在什么地方?----磁盤
  2. 查詢數據比較慢的,一般情況下是卡在哪了? ----IO
  3. (所以我們要提高IO的效率,那么如何提高呢?---- 次數和量兩個層面,例如:搬磚,搬一次和搬十次耗費的力氣是不一樣的,一次搬一塊和一次搬十塊耗費的力氣(占用IO資源)也是不一樣的。所以我們盡可能的在滿足自身需求的前提下,減少和IO的交互)
  4. 去磁盤讀取數據的時候,是用多少讀取多少嘛? ----磁盤預讀
  5. 磁盤預讀:內存跟磁盤在發生數據交互的時候,一般情況下有一個最小的邏輯單元,稱為頁,datapage,頁一般由操作系統決定是多大,一般是4k和8k,而我們在進行數據交互的時候,可以取頁的的整數倍來進行讀取,innodb存儲引擎每次讀取數據為16k
  6. 局部性原理:數據和程序都有聚集成群的傾向,同時之前被訪問過的數據和可能再次被查詢,涉及空間局部性、時間局部性

通過以上幾個概念我們大概知道索引是用來干嘛的了----預先設計好索引系統,等我們查詢數據的時候,減少和IO的交互來提高我們的查詢效率。

3.如何設計索引系統?

我們還是先明白幾個概念

  • 索引存儲在哪?---- 磁盤,查詢數據的時候會優先將索引加載到內存中
  • 索引在存儲的時候需要什么信息?需要存什么字段值?

—— key:實際數據行中儲存的值
—— 文件地址(指針、我們需要找到存儲數據文件在哪就得靠文件地址)
—— offset:偏移量(如果我們要取文件中的某一條數據時,就需要用到偏移量)

  • 上面說的這種格式的數據要使用什么樣的數據結構來儲存?

—— 上面可知我們我們的數據格式是 K-V類型的
知道K-V格式數據那我們就知道使用什么數據結構來儲存了,有哈希表、樹(二叉樹、二分查找樹、二分平衡樹紅黑樹、B樹B+樹
綜上所述,我們可以上面的數據結構來設計我們的索引系統

4.MYSQL索引系統是什么呢?

為什么不按照上面說的格式儲存呢?

眾所周知,mysql的索引系統使用的是B+樹,為什么是B+樹呢?接下來我們逐個分析其他的存儲結構為什么不行。在此之前,我們還是需要了解兩個前置知識----OLAP和OLTP

當我們存儲的數據量越多時,對應建立的索引也會越大,當我們從磁盤讀取到內存時就會產生IO問題,那我們又對索引建立索引嘛?不是的,所以mysql采取的B+樹

5.哈希表

上面是哈希表的存儲結構,我們來探討這類的存儲結構的優缺點
缺點:

  • 哈希沖突會造成數據散列不均勻,會產生大量的線性查詢,比較浪費時間
  • 不支持范圍查詢,當進行范圍查詢的時候,必須要挨個遍歷
  • 對于內存空間的要求比較高(要把全部數據加到到內存中)

優點:
如果是等值查詢,那么會非???/p>

那么在mysql中有沒有hash索引呢?

  • memory存儲引擎使用的是hash索引
  • innodb支持自適應hash

 6.樹

6.1 二叉樹

二叉樹本身是無序的,當我們在進行數據查找時要挨個去跟每個節點進行數據對比,看是否符合我們的數據要求,效率低下

6.2 二分查找樹(Binary Search Tree ,BST)

二分查找樹的特點:插入數據的時候必須有序,左子樹必須小于跟節點,右子樹必須保證大于根節點。所以使用二分查找樹對比二叉樹來顯然提高了查詢效率。
但是如果數據插入是遞增或者遞減的順序的話,二分查找樹就會退化成鏈表,查找效率又降低了

6.3 平衡二叉樹(Balanced Binary Tree, AVL樹)

根據二叉查找樹的所暴露出的問題,我們通過使用AVL樹經過左旋或者右旋讓樹平衡。但是為了保證平衡,在插入數據的時候必須要旋轉,通過插入性能的損失來彌補查詢性能的提升。讀多寫少的情況還好,但是如果我讀寫請求一樣多,那就不合適了。

6.4 紅黑樹

紅黑樹也是經過左旋和右旋讓樹平衡起來,還有變色的行為,最長子樹只要不超過最短子樹的兩倍即可…所以就能讓查詢性能和插入性能近似取得一個平衡,但是隨著數據的插入,發現樹的深度會變深,深的深度越深,意味著IO次數越多,影響數據讀取的效率。

6.5 B樹

針對紅黑樹暴露的問題,那么我們應該如何提高讀取的效率呢?我們能不能從有序的二叉樹,變成有序的多叉樹呢,這樣我們就可以儲存更多的數據

Degree為4表示的是一個節點存儲三個數據值,超過就要變換。那么實際的數據是怎么存儲的呢?我們需要Key完整的數據行

上圖是B樹實際存儲數據的圖,每個節點有三個元素key、指針、數據
查找實例,如果我想找28這個數據,先從磁盤塊1開始發現讀取不到,經對比范圍在p2指針指向的磁盤塊3,還是沒找到,再根據磁盤塊3的p2指針指向磁盤塊8找到28。我們來分析一下,每個磁盤塊大小為16kb,我們查找了三個磁盤塊只需讀取48kb,那么三層B樹能存儲多少條記錄呢?

我們理想化一下,假設key和指針不占用大小,一條數據占用1k的大小,那么磁盤1數據可以存儲16條,磁盤3也是16條,磁盤8也是16條,那么我們只能存儲161616=4096條記錄,這明顯有點少了,而且我們是理想化的,實際key和指針也是占用大小的。

于是乎我們不禁思考,為什么存儲的數據量那么少?
我們發現每層存儲的大小都被data給占用了,那么我們能不能只存儲key跟指針呢?為此就引出了B+樹

6.6 B+樹

B樹到B+樹的演變:非葉子節點不存儲數據,葉子節點才存儲數據

上圖我們可以假設p1和28為一組占用10字節大小,那么第一層可以存儲16000/10=1600個這樣的大小,第二層也是1600,第三層data占用1kb,那就是16條,所以總的存儲1600160016=40960000(4096萬)條記錄

mysql索引結構一般3~4層,但是還要注意一個問題。假設我們就是3層存儲結構,如何存儲更多的數據?
剛剛我們假設的是p1和28為10字節大小,那如果它們是1字節呢,那么存儲總量是160001600010=4096000000。所以就引申出面試一直被提到的建立索引用int還是var好?

答:保證key的長度越小也好,varchar小于4字節用varcahr,大于4字節用int

根據B+樹的特點,存儲量大,查詢快,所以mysql使用的就是B+樹

總結

至此mysql索引系統為什么使用的是B+樹就講述完了,如果有什么講錯的地方希望能提醒我改正過來。

到此這篇關于MySQL的索引系統采用B+樹的原因解析的文章就介紹到這了,更多相關MySQL索引B+樹內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • mysql 使用B+樹索引有哪些優勢
  • MySQL用B+樹作為索引結構有什么好處
  • 為什么MySQL數據庫索引選擇使用B+樹?

標簽:福州 溫州 山西 三明 無錫 阿里 定西 揚州

巨人網絡通訊聲明:本文標題《MySQL的索引系統采用B+樹的原因解析》,本文關鍵詞  MySQL,的,索引,系統,采用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL的索引系統采用B+樹的原因解析》相關的同類信息!
  • 本頁收集關于MySQL的索引系統采用B+樹的原因解析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    美女在线视频一区| 精品粉嫩aⅴ一区二区三区四区 | 韩国一区二区在线观看| 成人一区二区三区视频在线观看 | 欧美大度的电影原声| 日韩电影在线观看电影| 精品毛片乱码1区2区3区| 欧美视频你懂的| 欧洲人成人精品| 国内外成人在线| 亚洲一区二区精品久久av| 国产精品国产三级国产aⅴ中文| 日韩精品一区二区三区三区免费| 日韩精品专区在线影院观看| 91精品国产综合久久精品图片| 97国产一区二区| av电影在线观看不卡| proumb性欧美在线观看| 国产精品91一区二区| 亚洲国产三级在线| 日韩美女在线视频| 精品一区二区三区免费视频| 亚洲午夜激情网站| 丝瓜av网站精品一区二区| 1000部国产精品成人观看| 欧美一区二区久久久| av成人免费在线| 国产精品一区专区| 日精品一区二区| 亚洲精品日韩综合观看成人91| 婷婷中文字幕一区三区| 一区二区三区四区国产精品| 国产欧美日韩卡一| 中文在线资源观看网站视频免费不卡 | 亚洲国产精品尤物yw在线观看| 中文字幕一区二区在线观看| 亚洲精品欧美在线| 精品在线免费视频| 欧美视频一区在线| 欧美丝袜丝交足nylons| 99天天综合性| 成人性生交大片免费| 色欧美片视频在线观看| 色婷婷久久久综合中文字幕| 欧美精品第1页| 欧美一级一区二区| 日韩一区二区三区高清免费看看| 91香蕉视频mp4| 久久精品一区四区| 国产三区在线成人av| 欧美日韩亚洲不卡| 久久久精品tv| 国产经典欧美精品| 久久综合网色—综合色88| 国产制服丝袜一区| 久久精品视频网| 国产成人一区二区精品非洲| |精品福利一区二区三区| av在线免费不卡| 亚洲色图视频网站| 欧美系列亚洲系列| 免费欧美日韩国产三级电影| 日韩免费观看高清完整版在线观看| 美女一区二区久久| 欧美一卡在线观看| kk眼镜猥琐国模调教系列一区二区| 国产精品你懂的在线| 丰满少妇在线播放bd日韩电影| 亚洲欧美日韩一区| 久久综合狠狠综合久久激情 | 欧美电视剧在线观看完整版| 久久精品免费看| 中文字幕精品一区二区精品绿巨人| 奇米在线7777在线精品| 欧美精品一区二区三区很污很色的 | 国产欧美综合色| 色综合久久中文字幕| 亚洲国产乱码最新视频| 欧美日韩五月天| 国产91精品一区二区麻豆网站| 国产精品久线观看视频| 一区二区三区欧美在线观看| 精品国产一区二区三区四区四| 91精品国产综合久久久久久久| 欧美视频一区二区三区在线观看 | 国产伦精品一区二区三区在线观看| 69p69国产精品| 99re成人在线| 成人丝袜18视频在线观看| 麻豆国产欧美一区二区三区| 亚洲一区二区3| 亚洲女女做受ⅹxx高潮| 国产亚洲va综合人人澡精品| av高清不卡在线| 久久99精品一区二区三区三区| 日韩一级完整毛片| 欧美成人激情免费网| 国产女人18水真多18精品一级做 | 亚洲成人免费看| 日本女优在线视频一区二区| 偷拍与自拍一区| 亚洲免费av高清| 亚洲免费观看在线视频| 性久久久久久久| 日本欧美韩国一区三区| 亚洲6080在线| 亚洲一级电影视频| 婷婷丁香激情综合| 亚洲欧洲日韩在线| 日韩欧美在线不卡| 亚洲视频一区二区在线| 日韩欧美第一区| 高清在线成人网| 91麻豆成人久久精品二区三区| 欧美一区二区黄| 成人午夜激情视频| 一区二区三区免费观看| 在线观看91视频| 日本午夜一本久久久综合| 国产午夜精品在线观看| 国产成人免费在线视频| 久久青草欧美一区二区三区| 久久超碰97中文字幕| 欧美成人三级电影在线| 99国产精品久久久久久久久久久| 欧美精品一区二区三区高清aⅴ | 色婷婷综合久久久| 青青草国产精品亚洲专区无| 国产人妖乱国产精品人妖| 欧美日韩高清一区二区三区| 91网站在线播放| 经典三级视频一区| 久久久久99精品国产片| 日韩色在线观看| 91精品国产高清一区二区三区| 成人a级免费电影| 国产一区亚洲一区| 亚洲国产wwwccc36天堂| 欧美巨大另类极品videosbest | 国产精品久久三| 欧美高清在线一区二区| 色综合色狠狠综合色| 91美女福利视频| 欧美中文字幕一区| 色激情天天射综合网| 成人性生交大片免费看中文 | 91蜜桃在线观看| 国产精品一区免费在线观看| 亚洲在线视频一区| 亚洲视频你懂的| 国产无一区二区| 国产精品久久久久婷婷二区次| 欧美不卡一区二区三区四区| 91女人视频在线观看| 丁香激情综合国产| 成人一级视频在线观看| 国产高清成人在线| 国产精品99久久久久久久vr| 亚洲a一区二区| 成人美女视频在线看| 麻豆国产精品视频| 麻豆91精品视频| 免费成人深夜小野草| 蜜乳av一区二区| 日本亚洲三级在线| 国产麻豆精品theporn| 色素色在线综合| 欧美日韩中文国产| 欧美不卡123| 中文在线资源观看网站视频免费不卡| 在线观看视频欧美| 亚洲精品一二三| 成人午夜视频免费看| 国产一区二区精品久久99| 欧美成人bangbros| 久久99久国产精品黄毛片色诱| 国内精品在线播放| 成人国产电影网| 国产三级一区二区三区| 中文幕一区二区三区久久蜜桃| 一区二区日韩av| av日韩在线网站| 欧美精品xxxxbbbb| 欧美一级片在线观看| 日本欧美久久久久免费播放网| 欧美亚洲高清一区| 图片区日韩欧美亚洲| 91香蕉视频黄| ㊣最新国产の精品bt伙计久久| 亚洲四区在线观看| 午夜精品久久久久久不卡8050| 欧美最新大片在线看| 亚洲人成精品久久久久| 91精品国产丝袜白色高跟鞋| 色国产综合视频| 亚洲福利视频一区| 欧美在线免费观看视频| 欧美一级高清大全免费观看| 亚洲激情成人在线| 亚洲成人动漫在线免费观看|