少年阿賓

          那些青春的歲月

            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 閱讀(1179) 評論(0)  編輯  收藏 所屬分類: mysql
          主站蜘蛛池模板: 乐安县| 宁武县| 澜沧| 大名县| 上栗县| 平顺县| 久治县| 安康市| 云浮市| 南漳县| 康马县| 沙河市| 克什克腾旗| 德保县| 通江县| 湟中县| 甘肃省| 顺义区| 西盟| 米易县| 宁明县| 延川县| 正定县| 万盛区| 大同市| 镇安县| 桐乡市| 杭锦后旗| 南丰县| 陇川县| 左权县| 瑞丽市| 昭苏县| 张家界市| 馆陶县| 黑龙江省| 嘉定区| 炉霍县| 黑河市| 县级市| 弥勒县|