少年阿賓

          那些青春的歲月

            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
          主站蜘蛛池模板: 尼玛县| 新乡县| 桐城市| 甘德县| 瓦房店市| 宁强县| 莒南县| 柞水县| 丹东市| 九龙坡区| 剑阁县| 奎屯市| 河北区| 乌鲁木齐市| 新邵县| 中山市| 广州市| 永丰县| 亳州市| 拜城县| 富宁县| 社旗县| 泾阳县| 吉安市| 连南| 安福县| 安多县| 兴化市| 水富县| 绥中县| 武汉市| 乌恰县| 南陵县| 墨竹工卡县| 五莲县| 聊城市| 洛阳市| 诸城市| 舒城县| 闽侯县| 抚顺市|