最近2周时间, 对于MYSQL 5.5.15-log Windows XP版本,进行了各种测试和优化。目前mysql的许多单表数据已经超过了1亿条记录,MYSQL在经过各种优化后,处理上亿条记录非常轻松,性能远比想象的要好的多。
目前, 硬件情况是 intel Q9300 CPU 2.5G 4核心 775针的老CPU, 内存是2.6G DDR2, 硬盘是5900转2T的希捷节能硬盘, 都是很普通廉价的硬件。
MYSQL的各数据表全部采用innodb引擎,开始使用autocommit, 相当于每一条语句都提交,测试的QPS是:单机2.4万qps,后来修改为取消autocommit, 并且修改代码,缓存了部分中间数据,大幅度减少了一些重复简单的SELECT的命令数量,并且多条记录一次性提交,测试情况是大约 5000 QPS,实际上5000 QPS的等效性能更好一些,因为基本上都是insert和update命令。
中间还测试了memory引擎,定时也测试过,随时插入memory, 定时从memory写到innodb,想这样实现更高的性能,思路是利用内存数据库的高性能,结果不理想, 本来想将insert先插入到memory引擎缓冲,结果,非常失望,memory引擎的并发能力非常有限,偶然会出现插入错误,只好取消了这个思路。 现在看memory引擎的表锁,有时不能给其他进程等待的机会,对于我的应用,本来的思路是先缓冲到memory引擎,满1000条记录,再集中插入innodb, 定时时间设置为30秒,60秒,300秒测试都一样,一旦从memory向innodb写记录