成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

InnoDB到底支不支持哈希索引,為啥不同的人說(shuō)的不一樣?

開(kāi)發(fā) 開(kāi)發(fā)工具 MySQL
我在網(wǎng)上看到不同的資料,有的說(shuō)InnoDB支持哈希索引,有的說(shuō)不支持,到底哪個(gè)是正確的呢?

繼續(xù)回答水友提問(wèn)(最近問(wèn)MySQL的多):

沈老師,我在網(wǎng)上看到不同的資料,有的說(shuō)InnoDB支持哈希索引,有的說(shuō)不支持,到底哪個(gè)是正確的呢?

對(duì)于InnoDB的哈希索引,確切的應(yīng)該這么說(shuō):

  • InnoDB用戶(hù)無(wú)法手動(dòng)創(chuàng)建哈希索引,這一層上說(shuō),InnoDB確實(shí)不支持哈希索引;
  • InnoDB會(huì)自調(diào)優(yōu)(self-tuning),如果判定建立自適應(yīng)哈希索引(Adaptive Hash Index, AHI),能夠提升查詢(xún)效率,InnoDB自己會(huì)建立相關(guān)哈希索引,這一層上說(shuō),InnoDB又是支持哈希索引的;

那什么是自適應(yīng)哈希索引(Adaptive Hash Index, AHI)呢?原理又是怎樣的呢?咱們先從一個(gè)例子開(kāi)始。

不妨設(shè)有InnoDB數(shù)據(jù)表:t(id PK, name KEY, sex, flag)

畫(huà)外音:id是主鍵,name建了普通索引。

假設(shè)表中有四條記錄:

  • 1, shenjian, m, A
  • 3, zhangsan, m, A
  • 5, lisi, m, A
  • 9, wangwu, f, B

如上圖,通過(guò)前序知識(shí),容易知道InnoDB在主鍵id上會(huì)建立聚集索引(Clustered Index),葉子存儲(chǔ)記錄本身,在name上會(huì)建立普通索引(Secondary Index),葉子存儲(chǔ)主鍵值。

發(fā)起主鍵id查詢(xún)時(shí),能夠通過(guò)聚集索引,直接定位到行記錄。

  1. select * from t where name='ls'

發(fā)起普通索引查詢(xún)時(shí):

  • 會(huì)先從普通索引查詢(xún)出主鍵(上圖右邊);
  • 再由主鍵,從聚集索引上二次遍歷定位到記錄(上圖左邊)。

不管聚集索引還是普通索引,記錄定位的尋路路徑(Search Path)都很長(zhǎng)。

在MySQL運(yùn)行的過(guò)程中,如果InnoDB發(fā)現(xiàn),有很多SQL存在這類(lèi)很長(zhǎng)的尋路,并且有很多SQL會(huì)命中相同的頁(yè)面(page),InnoDB會(huì)在自己的內(nèi)存緩沖區(qū)(Buffer)里,開(kāi)辟一塊區(qū)域,建立自適應(yīng)哈希所有AHI,以加速查詢(xún)。

從這個(gè)層面上來(lái)說(shuō),InnoDB的自使用哈希索引,更像“索引的索引”,畢竟其目的是為了加速索引尋路。

既然是哈希,key是什么,value是什么?

  • key是索引鍵值(或者鍵值前綴)。
  • value是索引記錄頁(yè)面位置。

為啥叫“自適應(yīng)(adaptive)”哈希索引?

系統(tǒng)自己判斷“應(yīng)該可以加速查詢(xún)”而建立的,不需要用戶(hù)手動(dòng)建立,故稱(chēng)“自適應(yīng)”。

系統(tǒng)會(huì)不會(huì)判斷失誤,是不是一定能加速?

不是一定能加速,有時(shí)候會(huì)誤判。 當(dāng)業(yè)務(wù)場(chǎng)景為下面幾種情況時(shí):

  • 很多單行記錄查詢(xún)(例如passport,用戶(hù)中心等業(yè)務(wù))
  • 索引范圍查詢(xún)(此時(shí)AHI可以快速定位首行記錄)
  • 所有記錄內(nèi)存能放得下

AHI往往是有效的。

畫(huà)外音:任何脫離業(yè)務(wù)的技術(shù)方案,都是耍流氓。

當(dāng)業(yè)務(wù)有大量like或者join,AHI的維護(hù)反而可能成為負(fù)擔(dān),降低系統(tǒng)效率,此時(shí)可以手動(dòng)關(guān)閉AHI功能。

一個(gè)小知識(shí)點(diǎn),希望解答了這位水友的疑問(wèn)。

知其然,知其所以然。

【本文為51CTO專(zhuān)欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2022-04-26 10:13:00

哈希索引MySQLInnoDB

2020-07-02 10:30:52

iPhone蘋(píng)果北斗

2012-03-07 17:24:10

戴爾咨詢(xún)

2012-12-20 10:17:32

IT運(yùn)維

2016-05-09 18:40:26

VIP客戶(hù)緝拿

2015-10-19 12:33:01

華三/新IT

2017-05-25 15:02:46

聯(lián)宇益通SD-WAN

2025-04-03 08:21:18

2009-02-04 15:43:45

敏捷開(kāi)發(fā)PHPFleaPHP

2009-12-01 16:42:27

Gentoo Linu

2018-05-09 15:42:24

新零售

2009-06-12 15:26:02

2011-02-28 10:38:13

Windows 8

2016-03-24 18:51:40

2015-08-04 14:49:54

Discover

2009-07-07 10:44:14

多態(tài)

2022-05-05 21:47:32

Linuxls 命令

2019-01-03 14:39:08

Oracle甲骨文ORACLE

2013-01-11 18:10:56

軟件

2015-08-25 09:52:36

云計(jì)算云計(jì)算產(chǎn)業(yè)云計(jì)算政策
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品国产乱码久久久久久影片 | 久久久久久黄 | 欧美一区二不卡视频 | 91在线网站 | 超碰97干| 欧美成人一级 | 性色av一区二区三区 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 99精品视频一区二区三区 | 亚洲 欧美 日韩 在线 | 超碰成人免费观看 | 欧美人成在线视频 | 国产美女一区二区 | a精品视频| 日本一区二区三区免费观看 | 视频在线一区二区 | 亚洲国产一区二区在线 | 毛片一区 | 欧美日韩高清免费 | 国产激情一区二区三区 | 丁香婷婷成人 | 日韩成人 | 欧美综合国产精品久久丁香 | 中文字幕 国产 | 国产一区二区三区四 | 日韩免费毛片 | 久草在线免费资源 | 亚洲91精品 | 日韩欧美在线观看视频网站 | 免费观看www7722午夜电影 | 男人阁久久| 婷婷国产一区二区三区 | 国产精品精品久久久 | 亚洲福利一区 | 欧美日韩精品久久久免费观看 | 欧美黄色一区 | 国产免费高清 | 亚洲免费在线观看视频 | 久久精品成人 | 日韩久久久久 | 中文字幕在线人 |