您好,欢迎访问一九零五行业门户网

反驳"MySQL InnoDB (不行)的性能问题",千万_MySQL

在 javaeye 上看到一篇对 mysql fud(fear, uncertainty and doubt) 的文章
用mysql innodb benchmark 性能测试来说明
文中提到:innodb 的磁盘性能很令人担心,mysql 缺乏良好的 tablespace 真是天大的缺陷!……网上有用户反映存在同样的插入性能问题,百万行记录插入之后,插入速度下降到了 1/30,从开始的 1600行/秒衰退到 50行/秒……
50行/秒这么慢我从来没见过,见也没人反驳,所以自己再专门验证一下。
tim's 环境:
mysql 5.0.26 x86_64
linux x86_64
iddata 文件大小17g,未使用innodb_file_per_table分表选项
表1: 1000万行左右,表大小 2.2g,含主键有6个索引字段
表2: 3000万行左右,表大小 6.3g,含主键有6个索引字段
mysql还有其他一些数据也在iddata中,但测试时候其他数据未访问。
mysql server hardware 环境
双 xeon 3g
4g 内存, scsi 硬盘
非专业非名牌,普通组装的服务器。
表结构就是一般的用户表,包含 int, varchar, datetime 字段类型,无 text,blob 类型字段。
单行长度 0.1k 左右
对表1测试2分钟插入操作,在1千万的表中每个调用插入1行,通过java jdbc在另外一台测试机上调用。
服务器 cpu 30%
jdbc result:
insert ok /err: 73824/0
java heap: 7.12mb of 63.56 mb (11.2%) used
time elapse(sec): 129
avg平均/cur当前/max最大 inserts/sec: 572/620/620
再测试一个3000万的表,通过java jdbc在另外一台测试机上调用。
可能上一个测试2分钟会让人觉得没有说服力,3000万的表二就测试久一点吧。测试了10多分钟,又插入了100万条新的数据
一个调用只插入1行,8个线程。使用了连接池。
测试结果速度非常稳定。
服务器 cpu 30%
ok /err: 1,006,907/0
heap: 6.57mb of 63.56 mb (10.3%) used
time elapse(sec): 1683
avg/cur/max inserts/sec: 598/586/647
其它类似信息

推荐信息