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

程序員需要了解的知識點—MySQL索引機制

數據庫 MySQL
程序和數據的訪問都有聚集成群的傾向,在一個時間段內,僅使用其中一小部分,在最近的將來將用到的信息很可能與現在正在使用的信息在空間地址上是臨近的(稱空間局部性),或者最近訪問過的程序代碼和數據,很快又被訪問的可能性很大(稱時間局部性)。

一、索引是什么

MySQL官方對索引的定義為:索引(Index)是幫助MySQL 高效 獲取數據的數據結構,而MYSQL使用的數據結構是:B+樹

在這里推薦大家看一本書,《深入理解計算機系統的書》

1.1 局部性原理

程序和數據的訪問都有聚集成群的傾向,在一個時間段內,僅使用其中一小部分,在最近的將來將用到的信息很可能與現在正在使用的信息在空間地址上是臨近的(稱空間局部性),或者最近訪問過的程序代碼和數據,很快又被訪問的可能性很大(稱時間局部性)。

1.2 磁盤預讀

預讀的長度一般為頁(page)的整數倍頁是存儲器的邏輯塊,操作系統往往將主存和磁盤存儲區分割成連續的大小相等的塊,每個存儲塊稱為一頁(在許多操作系統中,頁大小通常為4K),主存和磁盤以頁為單位交換數據

1.3 簡介

在使用數據庫中,通常數據庫查詢是數據庫的最主要功能之一。但每種查找算法都只能應用于特定的數據結構之上。

  • 例如二分查找要求被檢索數據有序
  • 而二叉樹查找只能應用于二叉查找樹上,但是數據本身的組織結構不可能完全滿足各種數據結構(例如,理論上不可能同時將兩列都按順序進行組織),所以,在數據之外,數據庫系統還維護著滿足特定查找算法的數據結構,這些數據結構以某種方式引用(指向)數據,這樣就可以在這些數據結構上實現高級查找算法。這種數據結構,就是索引。索引一般以文件形式存儲在磁盤上,索引檢索需要磁盤I/O操作。所以評價一個數據結構作為索引的優劣最重要的指標就是在查找過程中磁盤I/O操作次數的漸進復雜度。
  1. 索引是幫助 MYSQL 高效獲取數據的數據結構
  2. 索引存儲在文件系統中
  3. 索引的 文件存儲形式與存儲引擎有關
  4. 索引文件的結構:hash、二叉樹、B樹、B+樹

二、索引的分類

2.1 hash

這里有一個mysql數據文件,有Id和name兩個列,如果我們用hash格式存儲的話(hash表),我們只要計算出某一個列的hash值,把它按照按照數組的長度取一個模,就可以取到從0-7n個下標的位置,這樣的話效率其實是比較高的,但是用hash表存儲,它具備一定的缺點 :

  1. 利用hash存儲的話需要將所有的數據文件添加到內存中,比較耗費內存空間
  2. 如果所有的查詢都是等值查詢,那么hash確實很快,但是在企業或者實際工作環境中范圍查找的數據更多,而不是等值查詢,因為hash就不太適合了,因此在mysql里面并沒有選擇hash存儲的格式2.2 二叉樹

索引格式:


對于樹有他是有一個更新跌過的順序在里面,不要一上來就看結構,先是了解什么樹,樹都是由一個樹根,然后有n多個分支組成,這些分支就是一些樹形結構,多你有多個樹分支(多元素)的時候,這個時候查找效率就會比較低,因此就有了二叉樹的東西,二叉樹為什么會好用一點,因為二叉樹它是都有兩個分支,但是兩個分支的話,會導致一個效果,就是每次我們在查找數據的時候,類似于二分查找的,但是二叉樹也有自己不太好的地方,大家可以看我們上圖中的二叉樹的索引格式,在左邊的節點會比較短一點(只需要讀三次),而右邊的節點會長很多(需要讀五次),會導致樹的深度比較深,每一次樹的節點讀取,都會有一次IO,深度越高,IO越高,會影響我們數據讀取的效率,因此也有了(平衡二叉樹)和(紅黑樹)

平衡二叉樹: 維護一個平衡,就是左子樹和右子樹高度之差,不能大于1,但是對于我們上面的格式就不太適合,因為他已經超過1了,但是AVL樹也會有一個問題就是調整的次數太頻繁了,它里面涉及到了一個操作就是旋轉,一種左旋,一個右旋,為了保持平衡需要N多次的旋轉,這樣的旋轉其實是很浪費時間的,每次新增或者刪除的時候,都要經歷N多次旋轉,效率太低了

推薦大家一個網站,可以直接看到AVL樹操作過程,有不了解的同學可以去看一看,很形象:AVL Trees (Balanced binary search trees)

紅黑樹: 本身也是一個平衡樹,但是它從中間做了一個權衡,就是損失一部分平衡的性能,但是又保持了相對的平衡,它做了這樣一個操作,就是最長子樹的高度,只要不超過最短子樹的兩倍,就可以了,同時在紅黑樹中它引入了紅和黑兩個節點信息,有了這些信息它可以幫助我們做一個平衡,在AVL樹有旋轉保持平衡,而紅黑樹有了旋轉和變色兩種來保持平衡,紅黑樹是AVL樹的進階,它損失了一部分平衡的性能,但是維護了我們插入和刪除數據的高效,雖然它損失了一部分性能,但是它依然是一個平衡樹,既然是平衡樹,他最長子樹,不超過最短子樹的兩倍,那意味著如果最短子樹是 4 ,那么最長子樹就是8,這樣在們查找數據的時候,又不是一個二分查找了,效率又會變低

無論是二叉樹還是紅黑樹,都會因為樹的深度過深而造成IO次數變多,影響數據的讀取的效率,最重要的就是減少IO

IO是我們IT行業中的一個瓶頸,一個是磁盤IO一個是網絡IO,我們作為軟件開發,是沒有辦法去調整硬件方面的瓶頸,只能從從程序里面減少我們的IO量,我們有兩個方向,一個是減少IO的次數,一個是減少IO的量,從這兩個方面去解決,比如說原來我們讀取數據要讀10次,現在只要讀取一次,這樣的IO量就少了10倍,原來我們需要讀1MB的數據,現在只要讀1KB的數據,這也就是為什么我們在寫mysql查詢語句的時候不推薦使用select * from ,因為這樣的查詢會查詢到N多個字段,本來我只要兩個字段,但是給了我30個字段,這樣會導致IO量增加了,因此我們就會去考慮,關于索引的次數能不能減少,因此下面就引出了我們的——B樹

2.3 B樹

B樹的特點:

  • 所有的鍵值分布在整顆樹中
  • 搜索有可能在非葉子結點結束,在關鍵字全集內做一次查找,性能逼近二分查找
  • 每個節點最多擁有m個子樹
  • 根節點至少有2個子樹
  • 分支節點至少擁有m/2顆子樹(除根節點和葉子節點外都是分支節點)
  • 所有葉子節點都在同一層,每個節點最多可以有m-1個key,并且以升序排列

B樹結構說明:

示例圖說明:每個節點占用一個磁盤塊,一個節點上有兩個升序排序的關鍵字和三個指向子樹根節點的指針,指針存儲的是子節點所在磁盤塊的地址,兩個關鍵詞劃分成的三個范圍域對應三個指針指向的子樹的數據的范圍域。以根節點為列,關鍵字為16和34,p1指針指向的子樹的數據范圍小于16,P2指針指向的子樹的數據范圍為16-34,P3指針指向的子樹的數據范圍大于34 查找關鍵字(28)過程:

  • 根據節點找到磁盤塊1,讀取內存【磁盤I/O操作第1次】
  • 比較關鍵字28在區間(16,34)找到磁盤塊1的指針P2
  • 根據P2指針找到磁盤塊3,讀入內存【磁盤I/O操作第2次】
  • 比較關鍵字28在區間(25,31),找到磁盤塊3的指針P2
  • 根據P2指針找到磁盤塊8,讀取內存,【磁盤I/O操作第3次】
  • 在磁盤塊8中的關鍵字列表找到關鍵字28

缺點:

  • 每個節點都有key,同時也包含data,而每個頁存儲空間是有限的,如果data比較大的話會導致每個節點存儲的key數量變小
  • 當存儲的數據量很大的時候會導致深度較大,增大查詢時磁盤IO次數,進而影響查詢性能

2.4 B+樹

B+Tree 是在BTree 的基礎之上做的一種優化,變化如下:

  • B+Tree 每個節點可以包含更多的節點,這個做的 原因有兩個,第一個原因是為了降低樹的高度,第二個原因是將數據范圍變為多個區間,區間越多,數據檢索的越快
  • 非葉子節點存儲key(1,2,3磁盤都是存儲的key),葉子節點存儲key和數據
  • 葉子節點兩兩指針相互連接(符合磁盤的預讀特性)順序查詢性能更高如果當前磁盤塊下沒有其他節點,就是 葉子節點,反之就是 非葉子節點

結構圖:

注意:在B+Tree上有兩個頭指針,一個指向根節點,另一個指向關鍵字最小的葉子節點,而且所有的葉子節點(即數據節點)之間是一種鏈式環結構,因此可以對B+Tree進行兩種查詢運算,一種是對于主鍵的范圍查找和分頁查找,另一種是從根節點開始,進行隨機查找。

三、mysql的存儲引擎

3.1 mysql innoDB (葉子節點直接放置數據)

3.1 mysql innoDB (葉子節點直接放置數據)

存放的是對應的行記錄

1、InnoDB是通過B+Tree結構對主鍵創建索引,然后葉子節點中存儲記錄,如果沒有主鍵,那么會選擇唯一鍵,如果沒有唯一鍵,那么會生成一個6位的row_id來作為主鍵

2、如果創建索引的鍵是其他字段,那么在葉子節點中存儲的是該記錄的主鍵,然后在通過主鍵索引找到對應的記錄

在name上建立索引

在name列上存放的是ID,然后通過ID去找到對應的key和數據

3.1 mysql MyISAM

下面0X0022其實就是地址,顯示根據我們的ID,找到我們的地址,然后通過地址去找到對應的表對應的數據

四、索引的分類

mysql索引的五種類型:主鍵索引、唯一索引、普通索引和全文索引、組合索引。通過給字段添加索引可以提高數據的讀取速度,提高項目的并發能力和抗壓能力

  • 主鍵索引:> 主鍵是一種唯一性索引,但它必須指定為PRIMARY KEY,每個表只能有一個主鍵
  • 唯一索引 > 索引列的所有值都只能出現一次,即必須唯一,值可以為空
  • 普通索引 > 基本的索引類型,值可以為空,沒有唯一性的限制
  • 全文索引 > 全文索引的索引類型為FULLTEXT,全文索引可以在 varchar、char、text類型的列上創建
  • 組合索引 > 多列值組成的一個索引,專門用于組合搜索

五、mysql的存儲引擎

小結

寫這篇文章的時候,小農的公司群消息不斷,因為項目中有問題需要我去解決,今天的mysql索引機制就到這里了.

 

責任編輯:姜華 來源: 牧小農
相關推薦

2023-12-15 08:07:37

響應式布局官網

2010-03-18 13:48:14

Linux新手

2024-12-13 08:02:55

大模型GPT后端

2019-11-19 15:10:40

程序員操作系統計算機基礎

2019-02-21 10:51:37

程序員技能溝通

2011-01-18 11:41:26

程序員

2011-01-11 11:37:03

程序員

2010-12-23 11:18:16

程序員

2011-01-07 10:54:39

程序員

2011-01-14 11:03:32

程序員

2010-12-27 10:08:22

程序員

2010-12-30 10:18:54

程序員

2011-01-05 14:53:53

程序員

2010-12-24 10:23:50

程序員

2011-01-28 10:53:18

程序員

2019-10-17 15:10:33

PHP程序員Linux

2023-03-02 11:52:00

自定義自動配置

2020-02-21 16:47:25

依賴沖突原因解決辦法

2022-01-05 08:00:00

框架Golang開源

2009-06-24 10:45:42

Linux
點贊
收藏

51CTO技術棧公眾號

亚洲第一精品在线观看| 一区二区在线免费观看视频| 久草福利在线| 另类综合日韩欧美亚洲| 欧美成年人视频| 精品国产人妻一区二区三区| 国产精品高清乱码在线观看 | 中文字幕在线观看免费高清| 外国成人毛片| 欧美日韩裸体免费视频| 亚洲一二区在线| 色欲av伊人久久大香线蕉影院| 视频在线观看一区二区三区| 九九精品在线观看| 久久久久久久久久久久| 国内精品视频| 在线观看av一区二区| 欧日韩免费视频| 五月婷婷在线观看| 2021久久国产精品不只是精品| 国产一区二区视频在线观看| 久久亚洲天堂网| 午夜精品999| 色爱av美腿丝袜综合粉嫩av | 久久电影在线| 56国语精品自产拍在线观看| 99热成人精品热久久66| 欧美人体视频xxxxx| 国产精品久久影院| 欧美另类一区| 亚洲人成色777777老人头| 国产一二精品视频| 国产啪精品视频| 波多野结衣小视频| 亚洲主播在线| 久久久久亚洲精品成人网小说| 羞羞在线观看视频| jvid福利在线一区二区| 亚洲欧美日韩在线一区| 在线天堂www在线国语对白| 日韩精品久久久久久久软件91| 欧美视频一区二区| 九色porny91| 东京一区二区| 91久久人澡人人添人人爽欧美| 日韩小视频在线播放| 91福利在线免费| 一区二区三区欧美激情| 一本久道久久综合| 精品影院一区| 91麻豆国产福利精品| 91麻豆蜜桃| 国产精品探花视频| 蜜臀av在线播放一区二区三区| 久久免费福利视频| 青春草免费视频| 亚洲精品中文字幕乱码| 日韩小视频在线| 国产精品久久久视频| 国产探花一区在线观看| 亚洲精品黄网在线观看| 精品人妻伦一二三区久| h视频久久久| 欧美大肚乱孕交hd孕妇| 91成人在线观看喷潮蘑菇| 精品视频一区二区三区| 欧美专区在线观看一区| 最近中文字幕一区二区| 国产69精品久久久久9999人| 在线视频一区二区三区| 免费日韩中文字幕| 性感美女一区二区在线观看| 色综合久久久久| 久久午夜夜伦鲁鲁一区二区| 日韩一级二级| 欧美三级视频在线播放| 高潮一区二区三区| 精品入口麻豆88视频| 日韩精品在线一区| 中文字幕狠狠干| 成人a'v在线播放| www国产91| 日本黄色小说视频| 激情欧美丁香| 热门国产精品亚洲第一区在线| 久久久国产精品成人免费| 国产精品试看| 国产精品高潮粉嫩av| 亚洲熟妇无码久久精品| 国产精品自在欧美一区| 国产乱人伦精品一区二区| 国产精品四虎| 亚洲人成影院在线观看| 成人毛片一区二区| 欧美日韩国产网站| 91精品麻豆日日躁夜夜躁| 最新国产精品自拍| 国产精品片aa在线观看| 中文字幕日韩高清| 国内偷拍精品视频| 性久久久久久| 91热福利电影| 日韩在线无毛| 亚洲欧美在线观看| 精品视频在线观看一区| 日韩欧美一区二区三区免费观看| 欧美精品自拍偷拍动漫精品| 免费黄色a级片| 黄色不卡一区| 久久久精品欧美| 黄色片视频免费| 国产在线视频不卡二| 精品久久一区二区三区蜜桃| 阿v免费在线观看| 亚洲综合视频在线观看| 欧美综合在线观看视频| 欧美专区一区| 深夜福利91大全| 欧美a∨亚洲欧美亚洲| 久久国产精品色婷婷| 国产一区自拍视频| 巨大荫蒂视频欧美大片| 日韩欧美亚洲范冰冰与中字| 国产毛片久久久久久| 国产不卡一二三区| 欧美高清视频在线| 中文有码在线播放| 91香蕉视频mp4| 99中文字幕在线观看| 性欧美超级视频| 精品国产1区二区| 亚洲怡红院在线观看| 六月婷婷一区| 电影午夜精品一区二区三区| 日韩免费啪啪| 欧美亚洲动漫精品| 波多野结衣福利| 国产精品v亚洲精品v日韩精品| 午夜精品久久久久久久久久久久久 | 日韩手机在线视频| 精品一区二区精品| 欧美日本亚洲| 在线观看爽视频| 亚洲国产成人精品久久| 在线观看亚洲网站| 青娱乐精品在线视频| 免费成人av网站| 国产高清中文字幕在线| 欧美va在线播放| 国产精品99久久久久久成人| 男女视频一区二区| 四虎永久在线精品免费一区二区| 在线天堂资源| 国产视频精品免费播放| 欧美三级韩国三级日本三斤在线观看| 热久久国产精品| 日韩精品福利视频| 成人动漫一区| 亚洲午夜未删减在线观看| 可以免费看的av毛片| 国产成人免费av在线| 成人在线观看www| 国产精品国产三级在线观看| 久久精品视频在线播放| 国产一区二区网站| 国产精品你懂的在线欣赏| 亚洲免费在线播放视频| 欧美福利专区| 国产91免费视频| 超碰资源在线| 亚洲视频在线免费观看| 无码人妻精品一区二区| 久久男人中文字幕资源站| 成人在线免费观看av| 亚洲人成精品久久久| 欧美中文字幕第一页| www免费网站在线观看| 欧美一区二区三区在线看| 欧美成人精品激情在线视频| 国产91露脸合集magnet| 波多野结衣乳巨码无在线| 婷婷精品在线观看| 国产91色在线免费| 成人在线免费电影| 制服丝袜成人动漫| 男女做暖暖视频| 91一区在线观看| 六月丁香婷婷在线| 中文字幕午夜精品一区二区三区| 99视频在线| 亚洲va中文在线播放免费| 中文字幕久热精品在线视频 | 欧美日免费三级在线| 粉嫩精品久久99综合一区| 精品一区二区三区av| 2022中文字幕| 中文字幕精品影院| 成人精品久久一区二区三区| 美女的胸无遮挡在线观看| 亚洲人高潮女人毛茸茸| 国产精品一区二区免费视频| 亚洲一区二区视频在线观看| 久久精品一区二区免费播放| 久久99久久99精品免视看婷婷 | 97久久夜色精品国产九色| 中文在线免费视频| 精品国偷自产在线视频| 欧美一级特黄aaaaaa大片在线观看| 欧美性猛交丰臀xxxxx网站| 香蕉久久久久久久| 99久久亚洲一区二区三区青草| 中文字幕永久视频| 亚洲字幕久久| 亚洲高清在线播放| 乱亲女h秽乱长久久久| 国产精品视频99| 91九色国产在线播放| 中文字幕亚洲欧美在线| 色wwwwww| 欧美一二三四在线| www.亚洲激情| 午夜精品一区二区三区电影天堂| 日本精品在线免费观看| 久久亚区不卡日本| 老熟女高潮一区二区三区| 日本视频一区二区三区| 日韩免费在线观看av| 精品日韩免费| 欧美精品尤物在线| av自拍一区| 51国偷自产一区二区三区 | 五月激情综合色| 成年人av电影| 国产精品久久久久精k8| 黄色工厂在线观看| 岛国精品在线观看| 在线免费黄色小视频| 美美哒免费高清在线观看视频一区二区 | 欧美色图校园春色| 免费成人美女在线观看.| 18禁免费无码无遮挡不卡网站| 欧美女激情福利| 只有这里有精品| 色综合久久一区二区三区| 日韩欧美手机在线| 欧美在线导航| 美女精品国产| 日韩欧美黄色| 国产一区精品视频| 亚洲大奶少妇| 3d动漫啪啪精品一区二区免费| 在线免费观看亚洲| 成人福利在线观看| 日本h片久久| 成人国产精品免费视频| 欧美视频免费看| 国产日韩欧美影视| 国产69精品久久| 国产精品一区二区三区在线播放 | 成人网视频在线观看| 亚洲欧美日韩网| 神马亚洲视频| 中文字幕亚洲第一| 丝袜美腿美女被狂躁在线观看| 中文字幕亚洲二区| 日本视频在线| 久久精品视频va| 欧洲成人综合网| 97国产精品人人爽人人做| 色婷婷视频在线观看| 成人97在线观看视频| h片在线播放| 久久久久久久久久av| 欧美韩日亚洲| 久久99国产精品久久久久久久久| 超级碰碰不卡在线视频| 97精品视频在线观看| 在线手机中文字幕| 国产精品美女www| avtt久久| 国产精华一区二区三区| 日本午夜精品| 欧美三级网色| 欧美精品国产一区二区| 国产h视频在线播放| 日日夜夜免费精品视频| 女同激情久久av久久| 成人天堂资源www在线| 国产一级二级在线观看| 国产农村妇女精品| 91麻豆精品久久毛片一级| 亚洲人成在线观看一区二区| 免费一级黄色大片| 一本到不卡精品视频在线观看| 中文字幕制服诱惑| 精品欧美一区二区在线观看| 人人九九精品| 久久综合久久美利坚合众国| 精品日韩av| 国产日韩一区在线| 精品五月天堂| 亚洲欧美综合一区| 欧美日韩三级| www.xxx亚洲| 岛国一区二区三区| 久久久久久久毛片| 性感美女久久精品| 亚洲一级在线播放| 亚洲电影免费观看高清| 一区二区高清不卡| 午夜精品久久17c| 亚洲伦理网站| 免费亚洲精品视频| 91亚洲国产高清| 黑森林福利视频导航| 国产91丝袜在线播放| 亚洲一级黄色录像| 亚洲va欧美va人人爽| 国产一区二区自拍视频| 亚洲精品网站在线播放gif| 成人爽a毛片免费啪啪动漫| 国产精品视频久久久| 欧美做受69| www.一区二区.com| 蜜桃视频一区二区| 欧美熟妇一区二区| 亚洲视频在线观看三级| 黄色片视频网站| 日韩午夜av电影| 高清性色生活片在线观看| 国内外成人免费激情在线视频网站| 成人在线免费| 欧美日韩国产一二| 国产九九精品| 一边摸一边做爽的视频17国产| 日韩美女精品在线| 中文在线免费看视频| 亚洲欧美激情另类校园| 超黄网站在线观看| 99久久99| 1024精品久久久久久久久| www.爱色av.com| 99精品热视频| 亚洲精品1区2区3区| 精品日韩欧美一区二区| av网址在线| 成人中文字幕+乱码+中文字幕| 日本a级不卡| 日韩在线第三页| 国产精品美日韩| 最新在线中文字幕| 国产亚洲综合久久| 精品3atv在线视频| 日本在线成人一区二区| 羞羞答答国产精品www一本| 国产人妻黑人一区二区三区| 亚洲一区二区三区视频在线| 亚洲老妇色熟女老太| 欧美激情精品在线| 99re8这里有精品热视频8在线 | 欧美成人精品激情在线观看| 国产精品一区二区精品视频观看| 中文字幕日韩一区二区三区| 九九**精品视频免费播放| 91在线无精精品白丝| 欧美日韩国产综合视频在线观看| www.亚洲.com| 国产女同一区二区| 久久裸体网站| 日本特黄在线观看| 亚洲网友自拍偷拍| 欧美高清电影在线| 国产成人精品在线观看| 成人免费电影网址| 欧美三级午夜理伦三级富婆| 亚洲欧洲日韩女同| 精品人妻少妇嫩草av无码专区| 精品国产一区久久久| 国产伦精品一区二区三区在线播放| 青青在线视频免费观看| 成人高清在线视频| 久久精品国产成人av| 亚洲最新av在线| 成人国产精品一区二区网站| 国产激情片在线观看| 成人av网址在线| 亚洲图片欧美日韩| 久久色精品视频| 丁香5月婷婷久久| 97av视频在线观看| 久久久.com| www.国产精品视频| 欧美在线一区二区三区四| 久久亚洲精品中文字幕蜜潮电影| 男人女人拔萝卜视频| 日本精品一区二区三区四区的功能| 999精品网站| 18国产免费视频| 亚洲人成网站免费播放| 日韩一区二区三区在线免费观看|