精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

阿里面試:MySQL索引憑什么能讓查詢效率提高這么多?

新聞 MySQL
我相信大家在數據庫優化的時候都會說到索引,我也不例外,大家也基本上能對數據結構的優化回答個一二三,以及頁緩存之類的都能扯上幾句,但是有一次阿里P9的一個面試問我:你能從計算機層面開始說一下一個索引數據加載的流程么?

背景

我相信大家在數據庫優化的時候都會說到索引,我也不例外,大家也基本上能對數據結構的優化回答個一二三,以及頁緩存之類的都能扯上幾句,但是有一次阿里P9的一個面試問我:你能從計算機層面開始說一下一個索引數據加載的流程么?(就是想讓我聊IO)

我當場就去世了....因為計算機網絡和操作系統的基礎知識真的是我的盲區,不過后面我惡補了,廢話不多說,我們就從計算機加載數據聊起,講一下換個角度聊索引。

正文

  • MySQL的索引本質上是一種數據結構

讓我們先來了解一下計算機的數據加載。

磁盤IO和預讀:

 

阿里面試:MySQL索引憑什么能讓查詢效率提高這么多?

先說一下磁盤IO,磁盤讀取數據靠的是機械運動,每一次讀取數據需要尋道、尋點、拷貝到內存三步操作。

尋道時間是磁臂移動到指定磁道所需要的時間,一般在5ms以下;

  • 尋點是從磁道中找到數據存在的那個點,平均時間是半圈時間,如果是一個7200轉/min的磁盤,尋點時間平均是600000/7200/2=4.17ms;

拷貝到內存的時間很快,和前面兩個時間比起來可以忽略不計,所以一次IO的時間平均是在9ms左右。聽起來很快,但數據庫百萬級別的數據過一遍就達到了9000s,顯然就是災難級別的了。

 

阿里面試:MySQL索引憑什么能讓查詢效率提高這么多?

 

阿里面試:MySQL索引憑什么能讓查詢效率提高這么多?

考慮到磁盤IO是非常高昂的操作,計算機操作系統做了預讀的優化,當一次IO時,不光把當前磁盤地址的數據,而是把相鄰的數據也都讀取到內存緩沖區內,因為當計算機訪問一個地址的數據的時候,與其相鄰的數據也會很快被訪問到。

每一次IO讀取的數據我們稱之為一頁(page),具體一頁有多大數據跟操作系統有關,一般為4k或8k,也就是我們讀取一頁內的數據時候,實際上才發生了一次IO。

(突然想到個我剛畢業被問過的問題,在64位的操作系統中,Java中的int類型占幾個字節?最大是多少?為什么?)

那我們想要優化數據庫查詢,就要盡量減少磁盤的IO操作,所以就出現了索引。

索引是什么?

  • MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取數據的數據結構。
  • MySQL中常用的索引在物理上分兩類,B-樹索引和哈希索引。

本次主要講BTree索引。

BTree索引

BTree又叫多路平衡查找樹,一顆m叉的BTree特性如下:

樹中每個節點最多包含m個孩子。

除根節點與葉子節點外,每個節點至少有[ceil(m/2)]個孩子(ceil()為向上取整)。

若根節點不是葉子節點,則至少有兩個孩子。

所有的葉子節點都在同一層。

每個非葉子節點由n個key與n+1個指針組成,其中[ceil(m/2)-1] <= n <= m-1 。

 

阿里面試:MySQL索引憑什么能讓查詢效率提高這么多?

這是一個3叉(只是舉例,真實會有很多叉)的BTree結構圖,每一個方框塊我們稱之為一個磁盤塊或者叫做一個block塊,這是操作系統一次IO往內存中讀的內容,一個塊對應四個扇區,紫色代表的是磁盤塊中的數據key,黃色代表的是數據data,藍色代表的是指針p,指向下一個磁盤塊的位置。

來模擬下查找key為29的data的過程:

  1. 根據根結點指針讀取文件目錄的根磁盤塊1。【磁盤IO操作1次】
  2. 磁盤塊1存儲17,35和三個指針數據。我們發現17<29<35,因此我們找到指針p2。
  3. 根據p2指針,我們定位并讀取磁盤塊3。【磁盤IO操作2次】
  4. 磁盤塊3存儲26,30和三個指針數據。我們發現26<29<30,因此我們找到指針p2。
  5. 根據p2指針,我們定位并讀取磁盤塊8。【磁盤IO操作3次】
  6. 磁盤塊8中存儲28,29。我們找到29,獲取29所對應的數據data。

由此可見,BTree索引使每次磁盤I/O取到內存的數據都發揮了作用,從而提高了查詢效率。

但是有沒有什么可優化的地方呢?

我們從圖上可以看到,每個節點中不僅包含數據的key值,還有data值。而每一個頁的存儲空間是有限的,如果data數據較大時將會導致每個節點(即一個頁)能存儲的key的數量很小,當存儲的數據量很大時同樣會導致B-Tree的深度較大,增大查詢時的磁盤I/O次數,進而影響查詢效率。

B+Tree索引

B+Tree是在B-Tree基礎上的一種優化,使其更適合實現外存儲索引結構。在B+Tree中,所有數據記錄節點都是按照鍵值大小順序存放在同一層的葉子節點上,而非葉子節點上只存儲key值信息,這樣可以大大加大每個節點存儲的key值數量,降低B+Tree的高度。

 

阿里面試:MySQL索引憑什么能讓查詢效率提高這么多?

B+Tree相對于B-Tree有幾點不同:

  • 非葉子節點只存儲鍵值信息, 數據記錄都存放在葉子節點中, 將上一節中的B-Tree優化,由于B+Tree的非葉子節點只存儲鍵值信息,所以B+Tree的高度可以被壓縮到特別的低。

具體的數據如下:

  • InnoDB存儲引擎中頁的大小為16KB,一般表的主鍵類型為INT(占用4個字節)或BIGINT(占用8個字節),指針類型也一般為4或8個字節,也就是說一個頁(B+Tree中的一個節點)中大概存儲16KB/(8B+8B)=1K個鍵值(因為是估值,為方便計算,這里的K取值為〖10〗^3)。

也就是說一個深度為3的B+Tree索引可以維護10^3 * 10^3 * 10^3 = 10億 條記錄。(這種計算方式存在誤差,而且沒有計算葉子節點,如果計算葉子節點其實是深度為4了)

我們只需要進行三次的IO操作就可以從10億條數據中找到我們想要的數據,比起最開始的百萬數據9000秒不知道好了多少個華萊士了。

而且在B+Tree上通常有兩個頭指針,一個指向根節點,另一個指向關鍵字最小的葉子節點,而且所有葉子節點(即數據節點)之間是一種鏈式環結構。所以我們除了可以對B+Tree進行主鍵的范圍查找和分頁查找,還可以從根節點開始,進行隨機查找。

數據庫中的B+Tree索引可以分為聚集索引(clustered index)和輔助索引(secondary index)。

上面的B+Tree示例圖在數據庫中的實現即為聚集索引,聚集索引的B+Tree中的葉子節點存放的是整張表的行記錄數據,輔助索引與聚集索引的區別在于輔助索引的葉子節點并不包含行記錄的全部數據,而是存儲相應行數據的聚集索引鍵,即主鍵。

當通過輔助索引來查詢數據時,InnoDB存儲引擎會遍歷輔助索引找到主鍵,然后再通過主鍵在聚集索引中找到完整的行記錄數據。

 

阿里面試:MySQL索引憑什么能讓查詢效率提高這么多?

不過,雖然索引可以加快查詢速度,提高 MySQL 的處理性能,但是過多地使用索引也會造成以下弊端:

  • 創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加。
  • 除了數據表占數據空間之外,每一個索引還要占一定的物理空間。如果要建立聚簇索引,那么需要的空間就會更大。
  • 當對表中的數據進行增加、刪除和修改的時候,索引也要動態地維護,這樣就降低了數據的維護速度。

注意:索引可以在一些情況下加速查詢,但是在某些情況下,會降低效率。

索引只是提高效率的一個因素,因此在建立索引的時候應該遵循以下原則:

  • 在經常需要搜索的列上建立索引,可以加快搜索的速度。
  • 在作為主鍵的列上創建索引,強制該列的唯一性,并組織表中數據的排列結構。
  • 在經常使用表連接的列上創建索引,這些列主要是一些外鍵,可以加快表連接的速度。
  • 在經常需要根據范圍進行搜索的列上創建索引,因為索引已經排序,所以其指定的范圍是連續的。
  • 在經常需要排序的列上創建索引,因為索引已經排序,所以查詢時可以利用索引的排序,加快排序查詢。
  • 在經常使用 WHERE 子句的列上創建索引,加快條件的判斷速度。

現在大家知道索引為啥能這么快了吧,其實就是一句話,通過索引的結構最大化的減少數據庫的IO次數,畢竟,一次IO的時間真的是太久了。。。

總結

就面試而言很多知識其實我們可以很容易就掌握了,但是要以學習為目的,你會發現很多東西我們得深入到計算機基礎上才能發現其中奧秘,很多人問我怎么記住這么多東西,其實學習本身就是一個很無奈的東西,既然我們不能不學那為啥不好好學?去學會享受呢?最近我也在惡補基礎,后面我會開始更新計算機基礎和網絡相關的知識的。

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2020-09-07 10:23:01

MySQL索引查詢

2022-11-09 10:32:50

群業務群聊數據結構

2024-10-28 08:28:59

2017-06-06 16:30:55

戴爾交付保障

2017-12-21 19:38:50

潤乾中間表

2022-07-26 23:43:29

編程語言開發Java

2010-10-25 10:55:11

Oracle函數索引

2013-01-15 09:41:45

編程語言

2019-01-31 10:15:14

群聊單聊消息

2024-02-04 10:29:58

線程通信

2024-04-02 08:41:10

ArrayListSubList場景

2017-08-11 14:21:33

軟件開發前端框架

2023-07-17 08:21:52

漏洞版本項目

2011-07-27 17:22:10

mysql極限測試索引

2016-12-01 13:40:37

2020-12-14 07:31:57

JDKJVM監控

2024-07-12 09:35:38

前端工具檢驗

2018-06-26 15:00:24

Docker安全風險

2012-07-06 09:00:34

MySQL

2024-02-20 08:09:51

Java 8DateUtilsDate工具類
點贊
收藏

51CTO技術棧公眾號

亚洲欧美电影一区二区| 5566成人精品视频免费| 成人3d动漫在线观看| 亚洲一区二区三区蜜桃| 亚洲性av网站| 一本色道久久综合亚洲精品高清 | 欧美色图12p| 成人av婷婷| 少妇高潮惨叫久久久久| 久久乐国产精品| 日韩av在线发布| 国产91免费看| 久久亚洲a v| 精品视频在线看| 日本一道高清一区二区三区| 久久不卡免费视频| 999国内精品视频在线| 国产亚洲精品中文字幕| av香蕉成人| 亚洲网中文字幕| www.日韩av.com| 久久综合婷婷| 美丽的姑娘在线观看免费动漫| 91视频最新入口| 亚洲国产天堂网精品网站| 91精品婷婷色在线观看| 96日本xxxxxⅹxxx17| 日本一区二区三区免费看| 亚洲成av人片在线观看无码| 自拍偷拍亚洲| 放荡的美妇在线播放| 国产精品乱码视频| 黑人狂躁日本妞一区二区三区| 99国产精品一区二区三区| 国产成人精品电影| 久久噜噜亚洲综合| 男人皇宫亚洲男人2020| 久久亚洲无码视频| 91中文在线视频| 亚洲图片欧美色图| 天天躁日日躁狠狠躁欧美| 精品久久久久久久久久久国产字幕| 台湾成人av| 欧美美女直播网站| 最新日韩在线| 米奇777四色精品人人爽| 妖精视频一区二区| 国产精品久久综合av爱欲tv| 日韩久久一区二区| 日韩美女毛片| www.黄色av| 国产一伦一伦一伦| 国产精品香蕉国产| 精品高清一区二区三区| 97国产精品| av免费在线一区二区三区| 国产51自产区| 91精品视频播放| 欧美一区二区三区在| 国产欧美一区二区三区国产幕精品| 成年人视频免费在线观看| 精品少妇人妻av一区二区三区| 国产美女精品视频免费观看| 91成人网在线| 香蕉视频成人在线观看| 国产欧洲在线| 337p粉嫩色噜噜噜大肥臀| www插插插无码免费视频网站| 久久成人18免费观看| 国产在线一区二区视频| 日韩视频在线观看免费视频| 国产精品久久亚洲| 91精品国产一区二区三区| 免费成人你懂的| 2023国产精华国产精品| 亚洲精品久久久蜜桃动漫| 免费高清视频在线观看| 国产精品小说在线| 7777精品伊人久久久大香线蕉超级流畅 | 男女视频在线观看| 久久久久亚洲av无码a片| 色一情一乱一伦一区二区三区| 亚洲人成在线观看| 欧美国产在线观看| 午夜亚洲福利| 成人午夜亚洲| 精品人妻久久久久一区二区三区| 国产亚洲精品成人a| 国产尤物91| 亚洲欧美中文日韩在线| 自拍偷在线精品自拍偷无码专区| 在线播放精品| 亚洲欧美在线成人| 色窝窝无码一区二区三区| 一级片手机在线观看| 一区二区三区四区国产| 久久精品国产亚洲7777| 亚洲成人动漫一区| 国内精品久久久久影院色 | 五月天在线免费视频| 97精品久久久| 欧美一区二视频| 久久久久久久精| 日韩一区二区在线| 免费观看成人性生生活片| 蜜臀av中文字幕| 极品魔鬼身材女神啪啪精品| 成人性做爰aaa片免费看不忠| 狠狠色综合网站久久久久久久| 色婷婷av一区二区三区久久| 婷婷中文字幕一区三区| 国产精品一区三区| 欧美激情综合色综合啪啪| 97成人超碰| 国产精品一二三区视频| www.中文字幕在线观看| 成人片黄网站色大片免费毛片| 欧美精品一区免费| 国产精品裸体一区二区三区| 久久久999精品| 欧美一区二区三区婷婷月色 | 国产精品久久久久久久久借妻| 亚洲第一福利在线观看| 亚洲一级二级在线| 91免费观看视频在线| 久久精品一区二区国产| 麻豆一区一区三区四区| 91探花在线观看| 黄色免费在线播放| 国产精品一区二区三区在线免费观看 | 久久在线免费观看| 日韩和的一区二区| 综合久久99| 精品av导航| 韩国久久久久久| 欧美videossex另类| 青青草在线播放| 91激情在线观看| 国产又爽又黄的视频| 欧美人与禽zozzo禽性配| 中文字幕影片免费在线观看| 久久久久久久少妇| 日韩精品在线视频免费观看| 日韩片电影在线免费观看| 91亚洲精品丁香在线观看| 国产精品黄色影片导航在线观看| 久久久国产一区| 日韩h在线观看| 精品国产a毛片| 欧美久久高跟鞋激| 欧美性色黄大片手机版| 色综合久久88色综合天天6| 一区二区三区四区视频精品免费| 中文字幕欧美区| 成人福利视频网站| 成人免费视频免费观看| 精品一区二区三区免费观看| 99视频一区| 91久久黄色| 亚洲综合三区| 六月婷婷一区| 老司机午夜免费精品视频 | 欧美一区二区三区四区久久| 欧美在线观看一区二区| 色悠悠亚洲一区二区| 亚洲成a人v欧美综合天堂下载| 亚洲欧美影音先锋| 综合av第一页| 亚洲欧美日本在线| 亚洲国产一区二区三区| 亚洲国产成人av好男人在线观看| 亚洲人成7777| 亚洲一区二区三区自拍| 精品福利在线看| 在线看一区二区| 欧美日韩免费观看一区二区三区| 91超碰这里只有精品国产| 欧美日韩一级二级| 日韩午夜av电影| 亚洲欧美综合v| 精品国产一区久久久| 欧美激情亚洲综合一区| 国产精品一区久久久| 91福利视频导航| 欧美性大战久久久久| 国产精品美女在线播放| 成人午夜免费在线视频| 人妻有码中文字幕| 日韩a一级欧美一级| 国产高潮失禁喷水爽到抽搐| 亚洲无人区码一码二码三码的含义 | 99麻豆久久久国产精品免费| 久久久噜噜噜久噜久久综合| 亚洲激情欧美激情| 欧美日韩日日夜夜| 日韩精品免费观看| 欧美国产第一页| 国产精品亚洲自拍| 蜜桃视频在线观看91| 亚洲午夜精品久久久中文影院av| 国产视频九色蝌蚪| 久久黄色一级视频| 五月婷婷婷婷婷| 草久视频在线观看| 成人免费观看在线视频| a级毛片免费观看在线| 51一区二区三区| 一区二区三区韩国免费中文网站| 在线成人h网| 成人综合在线视频| 夜夜夜精品看看| 精品av综合导航| 97人洗澡人人免费公开视频碰碰碰| 91成人免费在线观看| 国产美女网站在线观看| 亚洲精品乱码久久久久久不卡| 久久精品久久精品久久| 欧洲伦理片一区 二区 三区| 欧美电影网址| 久久久久久久久久久9不雅视频| 美女视频黄久久| 亚洲欧美日韩国产中文在线| 日韩视频免费观看高清完整版 | 久久精品99久久香蕉国产色戒| 成人久久精品视频| www.18av.com| 乐播av一区二区三区| 国产女优在线播放| 美女免费久久| 日韩电影不卡一区| 久久成人羞羞网站| 欧美日韩激情视频| 中文字幕日韩av综合精品| 成人免费看片视频| 成人性生生活性生交12| 久久精品www人人爽人人| 深夜影院在线观看| 动漫3d精品一区二区三区乱码| 免费看的黄色欧美网站| 一区视频在线播放| 夜夜嗨av一区二区三区四区| 99re在线国产| 亚洲激情在线看| 亚洲自拍偷拍第一页| 99爱视频在线| 国产在线观看你懂的| 黄色在线播放网站| 亚洲精品一级二级三级| 国产精品一区二区不卡| 欧美高清激情brazzers| 国产日韩欧美91| 国产免费视频传媒| 国产一区二区99| 男人久久天堂| 国产亚洲一区在线| 狠狠爱在线视频一区| 久久久久久高潮国产精品视| 熟妇熟女乱妇乱女网站| www深夜成人a√在线| 欧美边添边摸边做边爱免费| 精品av一区二区| 欧美国产一区视频在线观看| 伊人亚洲福利一区二区三区| 欧美日韩电影一区二区| 亚洲精品乱码久久| 亚洲 美腿 欧美 偷拍| 无码国产色欲xxxx视频| 免费网站在线观看人| 欧美激情视频一区二区三区在线播放 | 国产精品综合激情| 亚洲成人三级| 小小影院久久| 欧美性xxxxhd| 国产色综合天天综合网 | 欧美三级在线观看视频| 国产精品男女视频| 精品176极品一区| 国产成人综合视频| 亚洲开心激情网| 无码人妻精品一区二区三区99v| 女女百合国产免费网站| 自拍偷拍中文字幕| gogo在线高清视频| 亚洲一区二区三区高清不卡| 欧美亚洲一区二区三区四区| 亚洲综合一区二区不卡| 大又大又粗又硬又爽少妇毛片 | 免费黄网站欧美| 精品美女一区二区| 亚洲永久激情精品| 精品国产乱子伦| 美女一区2区| 亚洲一区影音先锋| 成人www视频在线观看| a天堂视频在线观看| 中文字幕伦理免费在线视频 | 久久综合色88| 蜜臀av免费观看| 国产黄色片在线播放| 性欧美长视频| 亚洲精品视频免费在线观看| 欧美精品999| 香蕉久久免费影视| 波多野结衣二区三区| 自拍偷拍欧美一区| 午夜精品久久久久久久99樱桃| 亚洲专区中文字幕| 欧美国产日韩在线观看成人| 日韩一区二区三免费高清在线观看| 欧美韩日一区二区三区四区| 国产精品草莓在线免费观看 | 依依综合在线| 91老师国产黑色丝袜在线| 66m—66摸成人免费视频| 中文字幕在线观看的网站| gogo亚洲高清大胆美女人体| 国产婷婷一区二区| 国产精品久久久久久久久男| 熟女少妇内射日韩亚洲| 久草综合在线| 亚洲国产欧美在线人成| 久久av免费一区| 中文字幕一区二区三区四区免费看 | 91成人午夜| 黄色成人在线免费| 欧美日韩一区在线观看视频| 亚洲免费视频二区| 中文字幕乱码亚洲无线精品一区 | 欧美成人app| 亚洲卡通欧美制服中文| 日本不卡免费新一二三区| 国产一区二区三区中文字幕| 国产精品黄色| 日韩在线中文字幕| 北京富婆泄欲对白| 日韩成人在线电影| 欧洲视频一区二区| 精品少妇人欧美激情在线观看| 黄色国产在线| 99久久国产综合色|国产精品| 91精品美女在线| 亚洲视频 欧美视频| 国产精品www.| 久色乳综合思思在线视频| 免费看黄色的视频| 国产一区丝袜| 亚洲电影在线观看| 日韩精品――色哟哟| 国产亚洲久久| 欧美日韩一区不卡| 另类小说第一页| 免费电影日韩网站| 欧美性xxxxxxx| 99re在线视频免费观看| 日韩脚交footjobhdboots| 午夜精品久久久久影视| 无码中文字幕色专区| 亚洲综合电影| 欧美日韩黄色一区二区| 男人添女人下面免费视频| 久久91视频| 欧美本精品男人aⅴ天堂| 影音先锋资源av| 亚洲精品亚洲人成在线| 一本一本久久a久久精品综合小说| 国产精品一二三区在线观看| 欧洲美女日日| 欧美xxxx做受欧美.88| 日韩欧美亚洲视频| 免费精品视频| 成人做爰www免费看视频网站| 亚洲av永久纯肉无码精品动漫| 成人午夜激情片| 日本一区二区三区精品视频| 浪潮av一区| 色综合天天狠狠| 亚洲最大福利网| 国产精品福利网站| aiai久久| 中文字幕在线观看日韩| 夫妇露脸对白88av| 日本一区中文字幕 | 色久视频在线播放| 秋霞av国产精品一区| 色综合咪咪久久网| 中文字幕乱视频| 日韩欧美主播在线| jizz日韩| 国产精品久久7| 青娱乐精品视频| 免费在线观看一级片| 亚洲男人天堂2019| 一级毛片精品毛片| 欧美精品无码一区二区三区| 亚洲日本一区二区| 欧美在线观看在线观看| 91啪国产在线| 快she精品国产999| 中文字幕手机在线观看| 亚洲天堂第二页|