溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Innodb關(guān)鍵特性之Adaptive Hash Index

發(fā)布時(shí)間:2020-08-11 12:33:03 來源:ITPUB博客 閱讀:789 作者:StevenBeijing 欄目:MySQL數(shù)據(jù)庫(kù)

      眾所周知,InnoDB使用的索引結(jié)構(gòu)是B+樹,但其實(shí)它還支持另一種索引:自適應(yīng)哈希索引。

哈希表是數(shù)組+鏈表的形式。通過哈希函數(shù)計(jì)算每個(gè)節(jié)點(diǎn)數(shù)據(jù)中鍵所對(duì)應(yīng)的哈希桶位置,如果出現(xiàn)哈希沖突,就使用拉鏈法來解決。更多內(nèi)容可以參考  百度百科-哈希表

Innodb關(guān)鍵特性之Adaptive Hash Index

      從以上可以知道,哈希表查找最優(yōu)情況下是查找一次.而InnoDB使用的是B+樹,最優(yōu)情況下的查找次數(shù)根據(jù)層數(shù)決定。因此為了提高查詢效率,InnoDB便允許使用自適應(yīng)哈希來提高性能。

可以通過參數(shù) innodb_adaptive_hash_index 來決定是否開啟。阿里云默認(rèn)是關(guān)閉的。

mysql>show variables like '%innodb_adaptive_hash_index%'
+----------------------------------+-----------------+
| Variable_name                    | Value           |
+----------------------------------+-----------------+
| innodb_adaptive_hash_index       | OFF             |
| innodb_adaptive_hash_index_parts | 8               |
+----------------------------------+-----------------+

         存儲(chǔ)引擎會(huì)自動(dòng)對(duì)個(gè)索引頁(yè)上的查詢進(jìn)行監(jiān)控,如果能夠通過使用自適應(yīng)哈希索引來提高查詢效率,其便會(huì)自動(dòng)創(chuàng)建自適應(yīng)哈希索引,不需要開發(fā)人員或運(yùn)維人員進(jìn)行任何設(shè)置操作。

      自適應(yīng)哈希索引是對(duì)innodb的緩沖池的B+樹頁(yè)進(jìn)行創(chuàng)建,不是對(duì)整張表創(chuàng)建,因此速度很快。

      可以通過查看innodb的status來查看自適應(yīng)哈希索引的使用情況。

INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 6236, seg size 6238, 50367801 merges
merged operations:
 insert 78512159, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 13148407, node heap has 0 buffer(s)
Hash table size 13148407, node heap has 0 buffer(s)
Hash table size 13148407, node heap has 0 buffer(s)
Hash table size 13148407, node heap has 0 buffer(s)
Hash table size 13148407, node heap has 0 buffer(s)
Hash table size 13148407, node heap has 0 buffer(s)
Hash table size 13148407, node heap has 0 buffer(s)
Hash table size 13148407, node heap has 0 buffer(s)
0.00 hash searches/s, 67793.48 non-hash searches/s

可以看到自適應(yīng)哈希索引的大小,以及使用情況。

注意: 從哈希表的特性來看,自適應(yīng)哈希索引只能用于等值查詢,范圍或者大小是不允許的。

等值查詢: select * from xx where name = "xxx";

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI