MySQL中自適應哈希索引


自適應哈希索引采用之前討論的哈希表的方式實現,不同的是,這僅是數據庫自身創建並使用的,DBA本身並不能對其進行干預。自適應哈希索引近哈希函數映射到一個哈希表中,因此對於字典類型的查找非常快速,如SELECT * FROM TABLE WHERE index_col='xxx'但是對於范圍查找就無能為力。通過SHOW ENGINE INNODB STATUS 可以看到當前自適應哈希索引的使用情況

-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 94 merges
merged operations:
 insert 280, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 4425293, node heap has 1337 buffer(s)
174.24 hash searches/s, 169.49 non-hash searches/s

現在可以看到自適應哈希索引的使用信息了。包括自適應哈希索引的大小、使用情況,每秒使用自適應哈希索引搜索的情況。需要注意的是,哈希索引只能用來搜索等值的查詢,如

SELECT * FROM table WHERE index_col='xxx'

而對於其他查找類型,如范圍查找,是不能使用哈希索引的。因此這里出現no--hash searches的情況,通過hash searches:non-hash searches可以大概了解使用哈希索引后的效率

由於自適應哈希索引是由InnoDB存儲引擎自己控制的,因此這里的這些信息只僅供參考。不過可以通過參數innodb_adaptive_hash_index來禁用或啟動此特性,默認是開啟


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM