MyISAM和InnoDB的插入性能测试(1)
周末测试了一下两个引擎的插入性能,MyIASM确实具有非常大的优势。
一、在应用服务器上并发线程对MySQL服务器上某个单表写入数据
表结构为(bigint, varchar(10000)),平均记录长度为5K,没有索引。
MyISAM:开启并发写入,即concurrent_insert = 2
平均每秒写入5073条记录。系统负载维持在2,磁盘利用率维持在12%。
插入8000w数据后,插入性能没有出现下滑迹象。
为了提高磁盘利用率,重新初始化环境后将并发线程数提升至500,插入速度和负载均未出现变化。
InnoDB:独立表空间,BufferPool大小为6G,未开启O_DIRECT
平均每秒写入3515条记录。系统负载维持在6.5以上,磁盘利用率维持在以上30%。
插入4000w数据后,插入性能没有出现下滑迹象。
因为系统负载较高,未提高线程数进行测试。
InnoDB:共享表空间(10G×30),BufferPool大小为6G,未开启O_DIRECT
平均每秒写入3898条记录。系统负载维持在6以上,磁盘利用率维持在35%以上。
插入4000w数据后,插入性能没有出现下滑迹象。
因为系统负载较高,未提高线程数进行测试。
二、在应用服务器上并发线程对MySQL服务器上多表写入数据
在以上测试中,MyISAM的性能没有得到完全的发挥,单表插入数据的速度存在上限。在本测试中,建立五个相同的表,各并发100个线程进入写入操作。
平均每秒写入7547条记录,比单表测试是提升了50%。系统负载在3.5左右,磁盘利用率维持在28%以上。
插入5000w数据后,插入性能没有出现下滑迹象。
三、总结
前提:没有建立索引
结论:InnoDB共享表空间的插入性能比独立表空间要高上10%。在多线程并发插入方面,MyISAM的性能要远远高于InnoDB。就目前已知数据而言,MyISAM要高出InnoDB 25%以上,而且随着表数量的增多有大幅提高的趋势。
硬件环境:
CPU:Intel(R) Xeon(R) CPU E5420 @ 2.50GHz,4核×2
MEMORY:16G
DISK:6块磁盘,RAID10
软件环境:
OS:Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
MySQL:5.0.81-log Source distribution,动态编译
Tags: InnoDB, insert, myisam, MySQL, MySQL Performance
March 29th, 2010 at 17:37
[...] 确实,MyISAM的插入性能优于InnoDB,具体参见这篇realzyy的博文。 [...]