少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

              哈希(hash)是一種非常快的查找方法,一般情況下查找的時間復雜度為O(1)。常用于連接(join)操作,如SQL Server和Oracle中的哈希連接(hash join)。但是SQL Server和Oracle等常見的數據庫并不支持哈希索引(hash index)。MySQL的Heap存儲引擎默認的索引類型為哈希,而InnoDB存儲引擎提出了另一種實現方法,自適應哈希索引(adaptive hash index)。

          InnoDB存儲引擎會監控對表上索引的查找,如果觀察到建立哈希索引可以帶來速度的提升,則建立哈希索引,所以稱之為自適應(adaptive)的。自適應哈希索引通過緩沖池的B+樹構造而來,因此建立的速度很快。而且不需要將整個表都建哈希索引,InnoDB存儲引擎會自動根據訪問的頻率和模式來為某些頁建立哈希索引。

          根據InnoDB的官方文檔顯示,啟用自適應哈希索引后,讀取和寫入速度可以提高2倍;對于輔助索引的連接操作,性能可以提高5倍。在我看來,自適應哈希索引是非常好的優化模式,其設計思想是數據庫自優化(self-tuning),即無需DBA對數據庫進行調整。

          通過命令SHOW ENGINE INNODB STATUS可以看到當前自適應哈希索引的使用狀況,如下所示:

          1. mysql> show engine innodb status\G;  
          2. *************************** 1. row ***************************  
          3. Status:   
          4. =====================================  
          5. 090922 11:52:51 INNODB MONITOR OUTPUT 
          6. =====================================  
          7. Per second averages calculated from the last 15 seconds  
          8. ......  
          9. -------------------------------------  
          10. INSERT BUFFER AND ADAPTIVE HASH INDEX  
          11. -------------------------------------  
          12. Ibuf: size 2249, free list len 3346, seg size 5596,  
          13. 374650 inserts, 51897 merged recs, 14300 merges  
          14. Hash table size 4980499, node heap has 1246 buffer(s)  
          15. 1640.60 hash searches/s, 3709.46 non-hash searches/s  
          16. ...... 

          現在可以看到自適應哈希索引的使用信息了,包括自適應哈希索引的大小、使用情況、每秒使用自適應哈希索引搜索的情況。值得注意的是,哈希索引只能用來搜索等值的查詢,如select * from table where index_col = 'xxx',而對于其他查找類型,如范圍查找,是不能使用的。因此,這里出現了non-hash searches/s的情況。用hash searches : non-hash searches命令可以大概了解使用哈希索引后的效率。

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

           

           

          轉自http://www.cnblogs.com/ylqmf/archive/2011/09/16/2179166.html

          posted on 2014-12-24 18:25 abin 閱讀(1174) 評論(0)  編輯  收藏 所屬分類: mysql
          主站蜘蛛池模板: 鹤峰县| 化隆| 阜宁县| 河曲县| 舒城县| 沁阳市| 清新县| 福建省| 马山县| 项城市| 左权县| 青龙| 仁寿县| 施甸县| 乳山市| 定兴县| 普定县| 安康市| 无为县| 綦江县| 保德县| 东平县| 大新县| 英吉沙县| 贵港市| 宾阳县| 兴文县| 曲靖市| 色达县| 广安市| 富民县| 宾阳县| 资兴市| 虞城县| 滨州市| 抚顺县| 临城县| 绿春县| 夏邑县| 尖扎县| 修武县|