Row Cache For InnoDB 第二版优化(附带安装和配置说明)

下载见:http://code.google.com/p/row-cache-for-innodb/downloads/detail?name=row_cache_for_mysql.5.1.48_2011_06_16.diff&can=2&q=#makechanges

下面说一下第二版的一个改进:

1. log的显示优化了.能够显示出打log的时间了,也能正确换行
2. 优化misc内存的占用..
3. 对小内存分配进行了优化(单独的内存池)
4. 可配置对需要的索引进行缓存,而不是无差别的对所有索引缓存(支持通配符哦)

这个功能的目的是为了能使缓存可控,并不是所有的数据都合适被row cache,只有那些数据比较离散的合适,比如辅助索引5. 支持使用操作系统的malloc进行内存分配(如果你用TC_malloc或JE_malloc可以尝试开启此功能)
6. 支持在线清空row cache缓存
7. 修正一些可能会引起crash的地方
8. 修正一个可能会导致内存泄露的地方

这次的patch经过了比较长时间(跑了一个礼拜)的高压力稳定性测试.应该是比较稳定了,建议大家使用这个版本的patch

还存在的一些问题和接下去要做的一些优化

1. misc的内存占用还是个大问题.. 32位下一个misc结构要使用48个字节的内存.64位下面就需要将近90个字节了,所以需要做指针压缩
也可以考虑一个misc结构缓存多条记录的方式来提高内存利用率2. 内存碎片

有使用row cache的一些弟兄也可以给我一些反馈,不管是好的还是不好的,都有助于我更好的维护row cache哦

可以发邮件到zephyrleaves@gmail.com ,谢谢

 
附安装和配置说明中文版: 
 安装

1. 下载5.1.48版的mysql源码 http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.48.tar.gz
2. 解压mysql源码

tar zvxf mysql-5.1.48.tar.gz3. 打上row cache for innodb的补丁 patch -p0 < ./row_cache_for_mysql.5.1.48_2011_05_11.diff4. Configure

建议参数: CFLAGS=”-O3″ CXX=gcc CXXFLAGS=”-O3 -felide-constructors -fno-exceptions -fno-rtti” ./configure –prefix=/usr/mysql –with-extra-charsets=all –with-plugins=partition,heap,innobase,myisam,myisammrg,csv –enable-assembler5. make & make install 新增的配置(my.cnf)(row cache是作用在innodb_plugin之上的哦,记得开启innodb_plugin) innodb_row_cache_mem_pool_size

分配给Row cache 的内存大小 默认1M innodb_row_cache_on 开启row cache 的开关,如果是OFF,那么一切内存都不会被分配
默认OFF innodb_row_cache_cell_num

row cache所使用的hash table的cell数,越大越容易被一次命中,但是也越占内存(也还好,也就占一个指针的空间) 默认 1000 innodb_row_cache_mutex_num_shift 由于row cache是使用多缓存实例的方式来提高并发性,这个参数就是用来配置实例数的,由于实例数必须是2的幂,所以实例数就是(1<<innodb_row_cache_mutex_num_shift) 即2^innodb_row_cache_mutex_num_shift 这个数字建议比innodb_thread_concurrency 大一点就行了,不需要很大
默认 6 innodb_row_cache_additional_mem_pool_size

额外的内存池,用于分配misc需要用到的内存,当innodb_row_cache_additional_mem_pool_size分配的内存用光时misc会到innodb_row_cache_mem_pool_size分配的内存里面去申请内存 默认 1M innodb_row_cache_index 用于配置需要被缓存的索引
配置样例:innodb_row_cache_index = test/test_large:idx_age  , test是数据库, test_large是表,idx_age 是索引,如果是主索引的话用PRIMARY 配置是支持 和 ? 这样的通配符的 如果不配置就是对所有索引进行缓存
这个配置是可以被在线更新的哦 默认为NULL innodb_row_cache_clean_cache 这个主要是用来做Debug用的
在线把这个值设置为1时 会清空row cache 显示的值 永远是0 innodb_row_cache_use_sys_malloc 新增的状态(使用show status可以看到)

Innodb_row_cache_n_get 总的向row cache请求数,包括可能missing的请求数 Innodb_row_cache_n_geted 从row cache返回成功的数量 Innodb_row_cache_lru_count row cache一共缓存记录数 Innodb_row_cache_lru_n_add 向row cache一共添加的记录数 Innodb_row_cache_lru_n_evict 被row cache逐出的记录数 Innodb_row_cache_lru_n_make_first 被row cache置顶的记录数(就是被访问到的次数 应该和Innodb_row_cache_n_geted是相等的,不过Innodb_row_cache_lru_n_make_first是在锁内的更精确 ) Innodb_row_cache_mem_pool_size row cache分配的内存数Innodb_row_cache_mem_pool_used 在show innodb status 上也加入了关于row cache使用情况:

本文来源于"阿里中间件团队播客",原文发表时间"  2011-09-10"

时间: 2024-10-25 22:44:18

Row Cache For InnoDB 第二版优化(附带安装和配置说明)的相关文章

《Android 应用案例开发大全(第二版)》——2.9节壁纸的优化与改进

2.9 壁纸的优化与改进 Android 应用案例开发大全(第二版) 本章对3D水族馆动态壁纸的开发进行了详细介绍,在学习过程中,重点掌握鱼游动过程中鱼旋转角度的算法,并掌握鱼和鱼之间作用力变化规律,鱼受到的墙壁作用力变化规律等. 动态壁纸界面的优化 没有哪一个案例的运行界面是不可以更加完美和绚丽的,所以,对本案例的界面.风格,读者可以自行根据自己的想法进行改进,使其更加完美,如水族馆地面.背景壁纸.水草类等的纹理图都可以进一步完善,从而达到一个更加理想的效果. 动态壁纸物理碰撞的优化 本案例物

《iOS开发指南》第二版 iOS7版-源码-样章-目录,感谢大家一直以来的支持

<iOS开发指南-从0基础到AppStore上线>第二版 iOS7版正式出版了 感谢大家一直以来的支持! 改版后采用全新的ios 7 api,详细介绍了最新的ios 7 开发相关的知识点,全部案例以iOS7版本SDK重新编译. 新增:iOS 7中文字排版和渲染引擎--Text Kit:      iOS6升级到iOS7遇到的问题与解决方法:      着重讲解iOS分层架构设计: 更新无处不在,更多新增内容请详细阅读本书 京东销售地址:http://item.jd.com/11419483.h

《Android 应用案例开发大全(第二版)》——1.4节 DDMS的灵活应用

1.4 DDMS的灵活应用 Android 应用案例开发大全(第二版) 作为一名合格的软件开发人员,必须要学会怎样去调试程序.因为调试是一个程序员最基本的技能,其重要性甚至超过学好一门语言.可以这样说,不会调试的程序员肯定不会有很好的发展. 那么什么是调试呢?所谓程序调试,是在软件投入实际使用前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程.这是保证软件系统正确性的必不可少的步骤. Android为开发人员提供了一个强大的调试工具--DDMS,通过DDMS可以调试并监控程序的运行

《SAS 统计分析与应用从入门到精通(第二版)》一1.2 SAS for Windows的安装和启动

1.2 SAS for Windows的安装和启动 SAS 统计分析与应用从入门到精通(第二版) SAS的安装盘一般包括SAS Setup Disk.Software Disk 1.Software Disk 2.Software Disk 3.Software Disk 4.Software Disk 5.SAS Shared Components,附带一张高密度的授权软盘.安装方法与其他Windows下的软件安装一样.以下以图示的方式介绍SAS安装方法. (1)双击安装盘中的Setup.ex

使用sysbench来测试Row Cache解惑

最近大牛 姜承尧  也在测试Row Cache,发现使用sysbench来进行测试效果不是很明显. 分析了一下 sysbench的三个测试场景uniform,gaussian,special都不是很符合Row Cache的使用场景导致效果不明显 先来解释一下 Row Cache要解决的问题主要是在有热门数据且热门数据分布很离散的情况下Page缓存导致的内存利用率低的问题,我们做过测试,在innodb内部对Page访问打点的统计来看,一个row有500字节大小,热门数据大概占千分之一地情况下,Pa

《中国智慧城市规划与建设》第二版

由中兴通讯编著的<中国智慧城市规划与建设>第二版日前已经正式出版发行.该书凝结了中兴通讯多年来的智慧城市实践经验以及理论研究,对于当下国内的智慧城市建设具有一定的指导意义.第一版问世以来,获得了社会较高的评价和读者广泛的认可,在业界也引起了不俗的反响. 随着"十三五"时期国家政策的进一步实施,中国智慧城市建设将更持续.更快速.更深入地推进.为保持与政策趋势的同步发展并且适应新形势下智慧城市的发展要求,<中国智慧城市规划与建设>第二版应运而生. 据悉,第二版的内容

Windows Phone 7 界面设计与交互指南第二版中英译本

自微软揭开Windows Phone 7 以来,已经受到外界大量关注.其与众不同的Metro设计风格使它个性十足.而诺基亚与微软的合作也让大家拭目以待. 去年微软发布了第二版Windows Phone 7的界面设计与交互指南.笔者本以为这只是对此前发布的CTP(微软内部的预览版)版本做了些许补遗,于是打算快速做一个中文增订本.可是入手以后才发现这次的第二版增加了大量新内容,并且对之前的内容做了大幅修改. 于是两周之后,这本全新的中英对照的Windows Phone 7设计指南才得以问世.本指南详

row cache字典缓冲区简介

字典缓冲区: dictionary cache,也叫row cache; 用于保存数据字典信息:如表空间相关信息.用户权限.objects信息.histogram信息等. 字典缓冲区在大小无法直接调整,只能通过调整共享池大小来调整字典缓冲区大小. SYS@ bys3>select pool,name ,bytes/1024/1024 MB from v$sgastat where name like 'row cache%'; POOL         NAME                

用于计算四则混合运算表达式的递归函数第二版

用于计算四则混合运算表达式的递归函数第二版 更新于2007-08-28 by billow3(QQ:41965573) 注:本文在发表时稍作了排版,如果有因排版引起的代码工作不正常请来信告知我们 #include <math.h>#pragma warn -8060 // 屏蔽编译时的 Possibly incorrect assignment 警告AnsiString __fastcall Calc(String sExp){ // 计算不带变量的四则混合运算表达式(支持取整int和圆整ro