概述
今天优化数据库性能做了一天,最终效果还是非常满意的,插入数据从开始不到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。
上面的测试确实做的很不好,主要是自己对数据库并不熟悉,导致整个测试过程也没有很好的规划,更多的时候都是尝试行的在边改边测。应该是先有一个稳定的测试代码或者用专门的数据库性能测试工具,然后每次对一个参数进行调整来对比修改后的效果。下一次要记住这个教训!
转载于:https://blog.51cto.com/passover/520131
最后
以上就是爱笑钢铁侠为你收集整理的Mysql Innodb插入性能优化手记的全部内容,希望文章能够帮你解决Mysql Innodb插入性能优化手记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复