测试是由同事完成的,这里只做收藏。
测试说明:
1、数据量为3kw记录,每条记录11个字段,一个为主键,主键为字符类型,类似:user****,后续为数值
其他10字段为字符类型,100字符,记录长度大约为1KB
2、使用ycsb进行压力测试。具体各类型参考以前文档
3、三千万数据,对目前数据库都能缓存到DB中(后续测试缓存80%,50%,30%等情况下性能情况)
4、测试项包括:数据装载,就是insert数据
ycsb的标准负载a、负载b、负载c、负载d、负载e、负载f测试
都采用64线程进行压测,通过分析是最优的
mysql测试环境为innodb_buffer_pool_size=20G
mysql_100g为innodb_buffer_pool_size=100G
mongodb为cacheSizeGB=20G
mongodb_100g为cacheSizeGB=100G
负载a:read=0.5,update=0.5,insert=0,scan=0(无范围查询)
负载b:read=0.95,update=0.05,insert=0,scan=0(无范围查询)
负载c:read=100 ---纯读应用,scan=0(无范围查询)
负载d:read=0.95,insert=0.05,scan=0(无范围查询)
负载e:scan=0.95,insert=0.05,范围查询,范围为100
负载f:read=0.5,readmodifywriteproportion=0.5(读出记录,然后修改记录,然后写回记录)
各项指标测试结果:
- IOPS测试
数据库类型 | ||||
测试类型 | mysql | mongodb | tokuMX | couchbase |
insert | 13196.1154 | 77248.81715 | 36650.51286 | 92041.69321 |
a | 17414.53382 | 120763.7097 | 56441.69009 | 171759.3308 |
b | 68047.57887 | 99998.66668 | 98474.30477 | 159533.7361 |
c | 65496.17721 | 96096.55782 | 96174.49901 | 97495.02775 |
f | 16601.97431 | 83504.51759 | 58816.14856 | 112853.6551 |
d | 66899.9244 | 100008.6674 | 97753.62177 | 101810.8761 |
e | 2345.999594 | 2114.057191 | 2116.884482 |
- 插入延迟
数据库类型 | ||||
测试类型 | mysql | mongodb | tokuMX | couchbase |
insert | 9683.304403 | 1658.783526 | 3490.779132 | 1337.107262 |
d | 2238.196522 | 687.4064251 | 751.8563847 | 1246.501145 |
e | 19863.49348 | 13568.54149 | 12914.24357 |
- updsate延迟
数据库类型 | ||||
测试类型 | mysql | mongodb | tokuMX | couchbase |
a | 6840.743134 | 649.0976047 | 1670.448293 | 685.4414804 |
b | 2260.907568 | 774.5944686 | 721.1753008 | 773.1773418 |
f | 6583.488954 | 572.8773741 | 1198.842941 | 722.6498385 |
读-修改-写延迟
数据库类型 | ||||
测试类型 | mysql | mongodb | tokuMX | couchbase |
d | 7133.568479 | 1050.091246 | 1677.069403 | 1442.553442 |
- 范围扫描延迟
数据库类型 | |||
测试类型 | mysql | mongodb | tokuMX |
e | 24474.38263 | 31060.48241 | 31075.847 |
- 存储大小(GB)
数据库类型 | ||||
mysql | mongodb | tokuMX | couchbase | |
1千万 | 19 | 4.2 | 8.5 | 11.2 |
结论:
1、所有NoSQL数据库的插入OPS读比MySQL强,其中couchbase最强,然后是mongoDB和tokuMX
2、所有NoSQL数据库的插入延迟读比MySQL小,其中couchbase最强,然后是mongoDB和tokuMX
3、读延迟最多的是couchbase,不如MySQL
4、update延迟,NoSQL都比MySQL强
5、范围扫描,MySQL比所有NoSQL强,由于couchbase测试问题未拿到数据(后续补充)
6、数据容量NoSQL数据库比MySQL占空间小,依次为MySQL、couchbase、tokuMX、mongoDB