相信有不少同仁已经做过过SSD作为存储对IO瓶颈的数据库性能测试,在得到可喜的成绩之余,在用于生产环境之前需要解决一些问题。
InnoDB共享表空间包含:
Data dictonary
Double write buffer
Insert buffer
Rollback segments
UNDO space
其中为了实现在脏数据异步回写到磁盘的过程中不造成页面(page)完整性问题,默认2M大小的Innodb的Double write buffer在做checkpoint的过程中会不停的擦写,而当前SSD对固定区域的读写次数是有限制的(比如200万次),这将造成这块区域在很短的时间内损坏。同样,InnoDB的redo log也会进行循环写操作,只因为大小可以设置,一般比Double write buffer要大上很多,损坏会慢一点。
因此如果我们打算在生产环境使用SSD,那么我们可以将 Redo log 和 Double write buffer设置指定到具有电池模块,能开启WB策略的Raid上,从而避免问题的出现。Redo log的配置不难,那么Double write buffer怎么处理? percona新发布的MySQL版本提供percona_innodb_doublewrite_path 参数,可以将Double write buffer单独指定到独立位置,从而将问题加以解决。
AD:
1:MySQL实验室将组织一批志同道合的朋友共同翻译、创作和维护MySQL中文参考手册,以最新的GPL MySQL英文文档为基础。新的内容我们根据实际情况自行添加和维护,并且计划提供comment功能,帮助充实文档内容,欢迎英文基础较好并且有相关经验的朋友参加。文档将在 http://www.mysqlab.net/docs/ 同步发布。
2:MySQL实验室网站放在美国加州, 需要稳定的CDN(目前2M带宽即可)赞助,有好心人请联系QQ:55300231。
3:MySQL实验室BLOG将有新作者/译者加盟,将翻译/创作一些国外优秀的文章和博客。
4:如果免费提供监控报警应用,是愿意开放一个限制权限的帐号,还是愿意安装agent(提供能多的监控服务)?
Related posts: