MongoDB与MySQL二个数据库的性能测试和对比
目的
测试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吧
MongoDB与MySQL二个数据库的性能测试和对比