作者:maniac0207 | 来源:互联网 | 2014-05-28 16:53
2013/5/10byhitzheng@foxmail.com目的测试mysql与mongodb的读写性能说明1.mongodb使用最新的2.4版本2.mysql使用5.0.95,储存引擎使用MYISAM(INNODB实测读写性能只有MYISAM的几分之一)3.测试数据只有两个字段,id:从0递增的整数(索引字段)da
目的
测试mysql与mongodb的读写性能
说明
1. mongodb使用最新的2.4版本
2. mysql使用5.0.95,储存引擎使用MYISAM(INNODB实测读写性能只有MYISAM的几分之一)
3. 测试数据只有两个字段,id:
从0递增的整数(索引字段) data: 数据字段,分别测试了data为1KB和24KB的性能
4. 测试读性能时,查询id是插入过的id中一个随机值
5. 读写并发进程均为50个
6. 打压机:4核/8G,DB机分别测试了部署在普通机(4核/8G内存)和高配机(24核/132G内存),硬盘为普通机械硬盘
7. 打压机与DB机通过1000M网卡直连
一、DB部署在普通机
1. data大小1KB,读写数目400W
a) mongodb
|
Total Data Size
|
QPS
|
iowait
|
net
|
Read
|
11G
|
14600
|
<1%
|
20Mb/s
|
Write
|
11G
|
10630
|
~100%
|
<17Mb/s
|
b) mysql
|
Total Data Size
|
QPS
|
iowait
|
net
|
Read
|
4G
|
29000
|
<1%
|
35Mb/s
|
Write
|
4G
|
15600
|
<40%
|
20Mb/s
|
2. data大小24KB,读写数目100W
a) mongodb
|
Total Data Size
|
QPS
|
iowait
|
net
|
Read
|
32G
|
271
|
100%
|
<6Mb/s
|
Write
|
32G
|
1230
|
~100%
|
<40Mb/s
|
b) mysql
|
Total Data Size
|
QPS
|
iowait
|
net
|
Read
|
23G
|
287
|
100%
|
<6Mb/s
|
Write
|
23G
|
6490
|
40%
|
130Mb/s
|
在此数据量下,mysql的写性能远高于mongodb,基本上已把网卡跑满了,读时两者都很慢,通过iostat ?xm
2命令查看,磁盘一直是100%占用
二、DB部署在高配机
1. data大小1KB,读写数目400W
a) mongodb
|
Total Data Size
|
QPS
|
iowait
|
net
|
Read
|
11G
|
15800
|
<1%
|
20Mb/s
|
Write
|
11G
|
13800
|
~100%
|
<20Mb/s
|
b) mysql
|
Total Data Size
|
QPS
|
iowait
|
net
|
Read
|
4G
|
38200
|
<1%
|
45Mb/s
|
Write
|
4G
|
23800
|
<40%
|
27Mb/s
|
2. data大小24KB,读写数目100W
a) mongodb
|
Total Data Size
|
QPS
|
iowait
|
net
|
Read
|
32G
|
4734
|
<1%
|
120Mb/s
|
Write
|
32G
|
2270
|
~100%
|
<100Mb/s
|
b) mysql
|
Total Data Size
|
QPS
|
iowait
|
net
|
Read
|
23G
|
4700
|
<1%
|
120Mb/s
|
Write
|
23G
|
4500
|
<40%
|
120Mb/s
|
结论
1. 从测试的结果来看mongodb的性能并没有传说中的那样完胜mysql,以上测试各种情况下写性能mysql至少比mongodb快50%,读性能基本比mongodb快100%
2. 测试时发现写数据时mongodb的硬盘io占用非常高,iowait为100%的时间基本占一半左右
3. mongodb的硬盘占用空间比mysql大很多,而且mongodb对内存的占用非常惊人
4. 从性能上看mongodb完全没有理由替换mysql,mongodb的优势是比较完善的集群功能(富本集、自动分片等),友好的Client
Api,如果这正是你需要的,那就选mongodb吧