您好,登錄后才能下訂單哦!
眾所周知,InnoDB使用的索引結(jié)構(gòu)是B+樹,但其實(shí)它還支持另一種索引:自適應(yīng)哈希索引。
哈希表是數(shù)組+鏈表的形式。通過哈希函數(shù)計(jì)算每個(gè)節(jié)點(diǎn)數(shù)據(jù)中鍵所對(duì)應(yīng)的哈希桶位置,如果出現(xiàn)哈希沖突,就使用拉鏈法來解決。更多內(nèi)容可以參考 百度百科-哈希表
從以上可以知道,哈希表查找最優(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";
免責(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)容。