读书频道 > 网站 > 网页设计 > MySQL管理之道:性能调优、高可用与监控
1.1.8 可关闭自适应哈希索引
14-02-20    奋斗的小年轻
收藏    我要投稿   
本书由资深MySQL专家撰写,以最新的MySQL版本为基础,以构建高性能MySQL服务器为核心,从故障诊断、表设计、SQL优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、MySQL高可用集群搭建与管理、MySQL服立即去当当网订购

如果一个表几乎完全驻留在内存中,执行查询最快的方法就是使用哈希索引。InnoDB有一个自动机制,它监视一个索引的使用情况。如果InnoDB注意到查询会从建立一个哈希索引中获益,它会自动地这么做,无须DBA人工加以干涉。

注意,哈希索引总是基于表上已存在的B树索引来建立的。InnoDB会在为该B树定义的键的一个前缀上建立哈希索引,不管该键有多长。哈希索引可以是部分的:它不要求整个B树索引被缓存在缓冲池中。InnoDB根据需要对被经常访问索引的那些页面建立哈希索引。

通常情况下,哈希索引可以提高查询性能,但是,在高并发情况下,会造成 RW-latch争用,进而堵塞进程。可以使用命令“show engine innodb status\G;”来监控SEMAPHORES,如果发现有很多waits,那么就应该关闭该功能,从而提升系统性能。

下面是一个测试机的情况:
SEMAPHORES信息如下:
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 38019, signal count 29541
Mutex spin waits 26137, rounds 282623, OS waits 7904
RW-shared spins 25122, rounds 637286, OS waits 17326
RW-excl spins 4071, rounds 400926, OS waits 12336
Spin rounds per wait: 10.81 mutex, 25.37 RW-shared, 98.48 RW-excl
INSERT BUFFER AND ADAPTIVE HASH INDEX信息如下:
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 29, seg size 31, 2 merges
merged operations:
 insert 1, delete mark 2, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 1245217, node heap has 12 buffer(s)
2765.81 hash searches/s, 2513.37 non-hash searches/s

可以看到,waits的次数并不是很多,且使用哈希索引的比例为50%,那么就不用关闭自适应哈希索引。

关于自适应哈希索引的介绍,请参见MySQL5.5手册:


 

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站