Chinaunix

标题: Secondary Buffer Pool in InnoDB (4.29 XtraDB已准备整合该patch) [打印本页]

作者: qlks    时间: 2010-03-29 11:01
标题: Secondary Buffer Pool in InnoDB (4.29 XtraDB已准备整合该patch)
本帖最后由 qlks 于 2010-04-29 10:58 编辑

-----------------------------------------------------------
4.29 XtraDB已准备整合该patch?
有人已经看到这篇文章了,http://www.mysqlperformanceblog. ... ash-cache-is-there/
是的,Peter已经和我联系了,很有可能会整合到XtraDB,大家耐心等待吧
-----------------------------------------------------------
4.21 增加辅助缓冲的架构图



可以对比Oracle的Flash Cache,Oracle不支持预载入,并且放入到Flash Cache的算法相对较为保守
-----------------------------------------------------------
4.6 关于最近的一些问题

1. 修改的InnoDB源代码是针对于InnoDB Plugin 1.0.6,因为MySQL 5.5开始将InnoDB Plugin作为默认的存储引擎了。

2. 因为是针对于1.0.6的版本,所以可以用于所有5.5,5.1的MySQL服务器。5.1动态加载的话,需要另外编译。5.5已经给出了编译好的Linux 64位版本,直接使用即可。强烈推荐使用64位系统。

3. 全部InnoDB的源代码已经上传到code.google.com,如果需要patch的话,只需diff就可以了。因为前段时间更新比较多,因此没有放上patch

4. 该patch没有在生产环境下使用,因为开发这个patch只是一个突然想到的。开发到一半时,发现Oracle已经有类似功能,称为Flash Cache。不过我用tpcc-mysql工具,在Linux下测试了10个小时,没有发现问题。非常希望可以看到生产环境下的使用,我可以给予支持。当然,我相信该patch目前还存在一些问题,希望通过生产环境下的使用,可以给出意见和建议。当然,我自己这里也会找一个项目进行生产环境下的测试。

5. 希望国内有对InnoDB和MySQL进行源码二次开发的请和我联系,我们可以聊聊。
-------------------------------------------------

Flash Cache是Oracle 11G新增的一个功能,原先只在Exedata服务器中支持,最近的patch使得可以在任何服务器中使用。

和Flash Cache的原理,写了一个针对InnoDB的patch,使得可以在InnoDB下使用闪存存储作为辅助缓冲(L2 Cache),如Flash Memoery,SSD等, 我把这个缓冲池称为辅助缓冲池。

patch会对InnoDB增加新的3个参数,
  1. [mysqld]
  2. innodb_secondary_buffer_pool_size=920M
  3. innodb_secondary_buffer_pool_file=/flash/ib_sbpfile
  4. innodb_secondary_buffer_pool_preload_table=tpcc.*:test.t
复制代码
启用Flach Cache后,show engine innodb status下可以看到更多关于辅助缓冲的信息,如:

  1. mysql> show engine innodb status\G;
  2. *************************** 1. row ***************************
  3. ......
  4. ----------------------
  5. SECONDARY BUFFER POOL
  6. ----------------------
  7. Secondary buffer pool size      58880
  8. Free pages      14111
  9. LRU pages       44769
  10. Page reads 269080, sync 201435, swap 214080
  11. Page make young 269080, skip_unuseful 9325, skip_write_overloaded 0
  12. No secondary buffer pool page gets since the last printout
  13. ......
复制代码
若启用预载入到辅助缓冲池innodb_secondary_buffer_pool_preload_table参数,在数据库启动时会看到类似如下内容:

  1. 100329 11:09:55  InnoDB: preloading table tpcc.warehouse to secondary buffer pool.(0.00%)
  2. 100329 11:09:55  InnoDB: preloading table tpcc.item to secondary buffer pool.(0.00%)
  3. 100329 11:09:55  InnoDB: preloading table tpcc.new_orders to secondary buffer pool.(1.01%)
  4. 100329 11:09:55  InnoDB: preloading table tpcc.history to secondary buffer pool.(1.27%)
  5. 100329 11:09:55  InnoDB: preloading table tpcc.district to secondary buffer pool.(4.57%)
  6. 100329 11:09:55  InnoDB: preloading table tpcc.customer to secondary buffer pool.(4.57%)
  7. 100329 11:09:56  InnoDB: preloading table tpcc.order_line to secondary buffer pool.(25.85%)
  8. 100329 11:09:56  InnoDB: preloading table tpcc.orders to secondary buffer pool.(57.90%)
  9. 100329 11:09:57  InnoDB: preloading table tpcc.stock to secondary buffer pool.(60.12%)
  10. 100329 11:09:57  InnoDB: preloading to secondary buffer pool finish.
复制代码
更多关于Secondary Buffer Pool的信息见:
http://code.google.com/p/david-m ... condary_buffer_pool

下载地址:
http://david-mysql-tools.googlec ... linux-x86_64.tar.gz

-------------------------------------------------------------------------------------------------------------------------------------------
为什么不直接使用闪存存储设备,如SSD硬盘来直接作为数据库的永久存储器呢?因为闪存存储设备的优势在读,而不在写。或者说写是其巨大的一个性能弱点。第一,写入速度慢,即使对比一般服务器硬盘也没有优势。第二,有写入寿命的说法,当然存储厂商都号称可以写很多次,但实际生产环境下,谁能放心?第三,写入速度随着使用,速度急剧下降。当然Win 7下已经提供了Trim API,不过Linux是否有类似接口不清楚。因此,在SSD没有解决写入速度和寿命的问题前,将其作为二级缓存是比较明智的一种方案。不过从长远来看,Flash is Disk, Disk is tape是肯定的。
作者: Coolriver    时间: 2010-03-29 11:07
谢谢 qlks的分享。
作者: phphp    时间: 2010-03-29 11:16
不错, 顶一下
自己动手, 丰衣足食
作者: leoxqing    时间: 2010-03-29 11:27
很好,支持!
作者: ruochen    时间: 2010-03-29 14:41
非常好

谢谢分享
作者: 枫影谁用了    时间: 2010-03-29 16:50
有条件可以测试下。很不错。
作者: deluxe1983    时间: 2010-03-30 09:19
up~
作者: famo    时间: 2010-04-02 07:45
老大作品,一定要顶啊!
作者: justin033    时间: 2010-04-02 21:19
thank for sharing!!!:wink:
作者: yueliangdao0608    时间: 2010-04-06 11:40
强力支持!
作者: 为什么删我号    时间: 2010-04-07 11:06
精华
作者: denniswwh    时间: 2010-04-08 15:42
强烈支持!!!
作者: voxxu    时间: 2010-04-08 15:47
不能不顶
作者: rsjq    时间: 2010-04-19 16:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: ruochen    时间: 2010-04-27 17:37
非常不错
希望能长期坚持下去debug
作者: ruochen    时间: 2010-04-27 17:38
作者有没有考虑将代码提交到maridb/xtradb/google/ or sf???
作者: 7islands    时间: 2010-04-28 11:40
回复 16# ruochen

貌似percona的cto正在联系楼主呢
http://code.google.com/p/david-mysql-tools/issues/detail?id=1
作者: ruochen    时间: 2010-04-28 12:10
好消息啊
看能不能修改的更高效
作者: ruochen    时间: 2010-04-28 12:11
然后再应用于生产就就爽了
作者: yueliangdao0608    时间: 2010-05-10 14:33
老板的帖子要支持。
作者: P-Linux    时间: 2010-07-12 19:35
LZ能否发一个PATCH给我,我想测试一下,penglixun(at)gmail.com
作者: Coolriver    时间: 2010-07-13 11:21
再次祝贺qlks.
作者: edenCC    时间: 2010-07-13 15:11
***看到楼上朋友的回复了,是版主大人的原创作品

小弟拜一拜  
作者: WaterDrops    时间: 2012-04-10 22:04
不错 支持下  虽然有点晚 啊
作者: devilkin0312    时间: 2012-04-12 15:34
up




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2