Heim >Datenbank >MySQL-Tutorial >反驳"MySQL InnoDB (不行)的性能问题",千万_MySQL

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

WBOY
WBOYOriginal
2016-06-01 13:53:33851Durchsuche

  在 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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:MySQL全文搜索_MySQLNächster Artikel:MySQL分表优化试验_MySQL