- 论坛徽章:
- 1
|
本帖最后由 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个参数,- [mysqld]
- innodb_secondary_buffer_pool_size=920M
- innodb_secondary_buffer_pool_file=/flash/ib_sbpfile
- innodb_secondary_buffer_pool_preload_table=tpcc.*:test.t
复制代码 启用Flach Cache后,show engine innodb status下可以看到更多关于辅助缓冲的信息,如:
- mysql> show engine innodb status\G;
- *************************** 1. row ***************************
- ......
- ----------------------
- SECONDARY BUFFER POOL
- ----------------------
- Secondary buffer pool size 58880
- Free pages 14111
- LRU pages 44769
- Page reads 269080, sync 201435, swap 214080
- Page make young 269080, skip_unuseful 9325, skip_write_overloaded 0
- No secondary buffer pool page gets since the last printout
- ......
复制代码 若启用预载入到辅助缓冲池innodb_secondary_buffer_pool_preload_table参数,在数据库启动时会看到类似如下内容:
- 100329 11:09:55 InnoDB: preloading table tpcc.warehouse to secondary buffer pool.(0.00%)
- 100329 11:09:55 InnoDB: preloading table tpcc.item to secondary buffer pool.(0.00%)
- 100329 11:09:55 InnoDB: preloading table tpcc.new_orders to secondary buffer pool.(1.01%)
- 100329 11:09:55 InnoDB: preloading table tpcc.history to secondary buffer pool.(1.27%)
- 100329 11:09:55 InnoDB: preloading table tpcc.district to secondary buffer pool.(4.57%)
- 100329 11:09:55 InnoDB: preloading table tpcc.customer to secondary buffer pool.(4.57%)
- 100329 11:09:56 InnoDB: preloading table tpcc.order_line to secondary buffer pool.(25.85%)
- 100329 11:09:56 InnoDB: preloading table tpcc.orders to secondary buffer pool.(57.90%)
- 100329 11:09:57 InnoDB: preloading table tpcc.stock to secondary buffer pool.(60.12%)
- 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是肯定的。 |
|