NewSQL ---- Mysql.8.0 与 CockroachDB.v20 大数据量查询性能对比
1测试环境以及测试用例设计1.1测试环境Mysql 和Mongodb 都是 4C/8G,测试接口都是通过Spring boot 微服务rest接口测试。MySQL 数据中的表和mongodb中集合都设创建了相同的索引。其中create_time 都使用了降序索引。1.1.1 Mysql 索引1.1.1 CockroachDB 索引1.2测试用例设计1.2.1时间范围分页查询参数/result/{p
1测试环境以及测试用例设计
1.1测试环境
Mysql 和CockroachDB都是 4C/8G,测试接口都是通过Spring boot 微服务rest接口测试。MySQL 数据中和CockroachDB的表都创建了相同的索引。其中create_time 都使用了降序索引。
1.1.1 Mysql 索引
1.1.1 CockroachDB 索引
1.2测试用例设计
1.2.1时间范围分页查询参数
/result/{page}/{size}/{startTime}/{endTime}
1.2.2根据任务信息查询参数:
/conditionOne/{page}/{size}/{powerDeviceId}/{taskId}
1.2.3执行批次范围查询参数:
/conditionTwo/{page}/{size}/{batchIdList}
1.2.4执行任务与批次范围查询参数:
/conditionThree/{page}/{size}/{batchIdList}/{taskIdList}
1.2.5聚合查询,采集计划前10个批次数据聚合:
/aggregate/{planId}
会使用group by 和 order by 以及limit。
2 千万级数据量性能测试对比
数据总量:
2.1 cockroachdb时间范围分页查询
/cockroachdb/result/20/20/2019-09-03/2020-08-04
2.1.1 性能测试数据
50 并发测试
100并发
200并发
500并发
隔了3分钟
2.1.2 系统监控数据
内存使用情况:
22时30分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
22时40分01秒 1880544 6098292 76.43 2220 2184108 6568580 82.33 3987696 1820088 20
22时50分01秒 1631876 6346960 79.55 2220 2302744 6539428 81.96 4122676 1930460 36
23时00分01秒 137184 7841652 98.28 2116 2144220 6608160 82.82 5874008 1669516 28
23时10分02秒 144184 7834652 98.19 2116 2073348 6617156 82.93 6038644 1498088 36
23时20分01秒 141044 7837792 98.23 2116 2630728 6552772 82.13 5442264 2105004 28
Cpu 使用情况:
22时30分01秒 CPU %user %nice %system %iowait %steal %idle
22时40分01秒 all 17.13 0.00 12.76 6.78 0.00 63.34
22时50分01秒 all 3.45 0.00 2.59 6.01 0.00 87.96
23时00分01秒 all 9.14 0.00 3.12 6.55 0.00 81.19
23时10分02秒 all 3.44 0.00 2.25 9.95 0.00 84.36
23时20分01秒 all 9.60 0.00 2.17 4.24 0.00 83.99
平均时间: all 8.44 0.00 4.47 6.70 0.00 80.39
磁盘:
22时30分01秒 tps rtps wtps bread/s bwrtn/s
22时40分01秒 245.67 2.83 242.83 682.07 1924.37
22时50分01秒 24.77 0.05 24.73 1.43 529.80
23时00分01秒 30.84 8.32 22.53 1196.91 536.13
23时10分02秒 22.51 2.73 19.78 86.96 489.74
23时20分01秒 37.10 9.46 27.64 2931.17 576.60
23时30分01秒 25.81 1.10 24.70 312.01 543.45
平均时间: 64.46 4.08 60.38 867.82 766.73
2.2 cockroachdb任务信息查询
/cockroachdb/conditionOne/2/20/598855984873701376/620656411052097536
2.2.1 性能测试数据
50并发:
100并发:
200并发:
2.2.2 系统监控数据
内存使用:
00时10分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
00时20分01秒 325708 7653128 95.92 0 808552 7055688 88.43 6755072 647884 168
00时30分01秒 174832 7804004 97.81 0 676232 7230624 90.62 7061768 488056 32
00时40分01秒 230312 7748524 97.11 0 429984 7329160 91.86 7218156 280556 32
平均时间: 243617 7735219 96.95 0 638256 7205157 90.30 7011665 472165 77
CPU使用:
00时10分01秒 CPU %user %nice %system %iowait %steal %idle
00时20分01秒 all 36.66 0.00 3.52 3.74 0.00 56.09
00时30分01秒 all 71.57 0.00 3.70 1.65 0.00 23.08
00时40分01秒 all 43.41 0.00 4.85 3.09 0.00 48.65
平均时间: all 50.49 0.00 4.02 2.83 0.00 42.66
磁盘使用:
00时10分01秒 tps rtps wtps bread/s bwrtn/s
00时20分01秒 32.91 5.92 26.99 474.27 543.52
00时30分01秒 30.17 3.41 26.76 160.71 580.36
00时40分01秒 31.76 6.82 24.94 965.01 523.28
平均时间: 31.61 5.38 26.23 533.34 549.05
2.3 cockroachdbl执行批次范围查询
/cockroachdb/conditionTwo/10/20/10200,10254,10401,10445,10492,30194
2.3.1 性能测试数据
50并发:
100并发:
200并发:
2.3.2 系统监控数据
CPU:
00时40分01秒 all 43.41 0.00 4.85 3.09 0.00 48.65
00时50分01秒 all 6.35 0.00 5.49 5.45 0.00 82.71
01时00分01秒 all 6.39 0.00 18.01 41.60 0.00 33.99
内存:
00时40分01秒 230312 7748524 97.11 0 429984 7329160 91.86 7218156 280556 32
00时50分01秒 263680 7715156 96.70 0 286144 7603044 95.29 7305396 159028 120
01时00分01秒 2973028 5005808 62.74 0 409228 6378332 79.94 4440356 328892 32
硬盘:
00时10分01秒 tps rtps wtps bread/s bwrtn/s
00时40分01秒 31.76 6.82 24.94 965.01 523.28
00时50分01秒 27.08 5.50 21.59 173.05 502.61
01时00分01秒 938.94 932.31 6.63 204102.59 162.60
2.4cockroachdb批次任务查询
2.4.1 性能测试数据
50并发:
100并发:
200并发:
2.4.2 系统监控数据
CPU:
00时10分01秒 CPU %user %nice %system %iowait %steal %idle
01时00分01秒 all 6.39 0.00 18.01 41.60 0.00 33.99
01时10分01秒 all 8.70 0.00 5.94 4.19 0.00 81.17
内存:
00时10分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
01时00分01秒 2973028 5005808 62.74 0 409228 6378332 79.94 4440356 328892 32
01时10分01秒 5032084 2946752 36.93 0 705304 8054932 100.95 2148272 560096 96
磁盘读写:
00时10分01秒 tps rtps wtps bread/s bwrtn/s
01时00分01秒 938.94 932.31 6.63 204102.59 162.60
01时10分01秒 21.50 4.14 17.36 1081.46 897.68
2.5 cockroachdb聚合查询
/cockroachdb/aggregate/620656410385203201
2.5.1 性能测试数据
50并发:
100并发:
200并发:
2.6总结
依据上面的测试数据给出对比图
由于LSM架构(Log Structured Merge Tree),rocksdb的读性能存在问题。这也是为什么 TiDB 和 cockroachDB 都建议使用SSD。另外由于每个节点都有备份(一般3份)写入rocksdb,这样写放大也会导致写的效率降低。再看系统监控的数据,磁盘读写其实并不多,但是内存使用率很高,说明cockroachDB有效利用了缓存,会将数据预加载到内存中,从而提高了读的效率,但是当读的并发量增加时,读效率突然降低很多,说明cockroachDB还是无法很好的处理高并发读的场景。
3 与MYSQL8 的性能对比
依据测试结果,这里只针对较少并发量的情况下 CockroachDB 与 MYSQL8 的读性能对比。MYSQL8 的性能数据 参考 :Mysql.8.0 与 MongoDB.4.2大数据量查询性能对比.
不同的测试用例查询时间对比:以50%为分割线,占比少的说明效率高。用性能测试采集到的最优的性能数据来对比。
吞吐量对比:以50%为分割线,占比多的说明吞吐量高。用性能测试采集到的最优的性能数据来对比。
更多推荐
所有评论(0)