您的位置:首页 > 数据库 > MySQL

Mysql Innodb插入性能优化手记

2011-03-19 21:17 369 查看
今天优化数据库性能做了一天,最终效果还是非常满意的,插入数据从开始不到2000rec/s,最后达到3300rec/s。中间过程测试代码出了些问题,有些细节上的参数效果都没体现出来,但是最终结果速度明显提升应该是两个方面起的作用。

首先,我安装了innodb_plugin_1.0.15来代替了buildin innodb版本,这个性能上的直接变化我到时没注意,我主要是为了plugin版本有更多可以调整的参数。但是很多参数反复调整性能变化都不大,包括读写线程数、日志参数、文件系统等等。但是主要能有显著性能提升的是innodb_flush_log_at_trx_commit=0和innodb_buffer_pool_size=2G。前面的日志刷新参数就不说了,后面缓冲池的参数在看show engine innodb status \G中发现Free buffers 为0,说明缓冲池仍然不够大,看到一份测试报告是说在8G缓冲池的情况下性能提升才比较明显。这个时候插入速度已经到了2500rec/s。

数据库本身的优化再继续做可能也没太大提升了,就想到从插入动作入手。本来已经是用ibatis提供的批量插入,后来上网查了一下资料,惊讶的发现居然在最新的jdbc里面提供了支持批量的连接。直接到mysql官方网站下载了一个5.1.15的jdbc,只要在数据库连接上添加rewriteBatchedStatements=true就可以了。重新启动程序,发现现在每次的插入量真的是300rec一次了,而之前实际插入感觉还是一条条的,用show processlist看到的执行语句都是单条的。结果再测一下发现已经达到了3300rec/s。

上面的测试确实做的很不好,主要是自己对数据库并不熟悉,导致整个测试过程也没有很好的规划,更多的时候都是尝试行的在边改边测。应该是先有一个稳定的测试代码或者用专门的数据库性能测试工具,然后每次对一个参数进行调整来对比修改后的效果。下一次要记住这个教训!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: