推广 热搜:   公司  快速  中国  企业    行业  设备  上海  未来 

NewSQL ---- Mysql.8.0 与 MemSQL 7.0 大数据量查询性能对比

   日期:2024-11-05     移动:http://keair.bhha.com.cn/mobile/quote/452.html

目录

NewSQL ---- Mysql.8.0 与 MemSQL 7.0 大数据量查询性能对比

1测试环境以及测试用例设计

1.1测试环境

1.2测试用例设计

2 千万级数据量性能测试对比

2.1 MemSQL时间范围分页查询

2.1.1 性能测试数据

2.2任务信息查询

2.2.1 性能测试数据

2.3 执行批次范围查询

2.3.1 性能测试数据

2.4 批次任务查询

2.4.1 性能测试数据

2.5 聚合查询

2.5.1 性能测试数据

2.5 系统资源监控数据

2.6总结

2.7 图表性能分析

2.7.1查询时间对比

2.7.2吞吐量对比

3 稳定性测试

3.1 docker重启以后

3.2 Linux系统重启

3.3 数据加载的过程中资源使用情况


Mysql 和MemSQL都是 4C/8G,测试接口都是通过Spring boot 微服务rest接口测试,MySQL 数据中和MemSQL的表都创建了相同的索引,其中create_time 都使用了降序索引(MYSQL8.0是倒排索引)。

1.1.1 Mysql 索引

1.1.1 MemSql 索引

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。

memsql数据总量

MemSQL是兼容Mysql的,这里完全使用Mysql8.0的测试用例。

/mysql/result/20/20/2019-09-01/2019-09-30

2.1.1 性能测试数据

50 并发

100并发

200并发

/mysql/conditionOne/20/20/611607718939246592/611680047597752372

2.2.1 性能测试数据

/mysql/conditionTwo/10/20/1001,1002,1003,1004,1005,1027

2.3.1 性能测试数据

2.4.1 性能测试数据

/mysql/aggregate/620656410385203201

2.5.1 性能测试数据

50并发

100并发

200并发

CPU

内存

磁盘读写

在性能测试的过程中,系统的CPU 和磁盘I/O 占用率都比较低,基本不读磁盘,是从内存中查询数据,所以相对效率比较高。但是内存的占用率太高了,1千万的数据(加上索引)需要差不多8G的内存。之前我设置为6G,导入数据的时候一直报错,后来设置为8G才没有问题。

依据上面的测试数据给出对比图,这里使用性能测试结果中的平均值的极大值。

相对于TiDB 和CockroachDB ,MemSQL的性能要好的多,但是在并发量增加的时候,读的效率突然降低很多,说明MemSQL也是无法很好的处理高并发读的场景。但是MemSQL 总是在使用内存来处理I/O,所以它的写的效率很高。下面是我测试过程中同步数据的截图,这里都没有使用mysqldump,只是使用navicat,大概 需要11分钟可以同步1千万(3G)的数据量。相对于其他的NewSQL数据库,可以说就像兔子一样,跑的飞快。

2.7.1查询时间对比

以50%为分割线,占比少的说明效率高。MemSQL 使用多次测试结果中平均响应时间的极大值,Mysql使用极小值。参考 :Mysql.8.0 与 MongoDB.4.2大数据量查询性能对比. 中 mysql50并发的测试数据。

2.7.2吞吐量对比

以50%为分割线,占比多的说明吞吐量高。MemSQL 使用多次测试结果中平均响应时间的极大值,Mysql使用极小值。参考 :Mysql.8.0 与 MongoDB.4.2大数据量查询性能对比. 中 mysql50并发的测试数据.

无论是读写的效率,还是并发吞吐量, MemSQL  明显优于Mysql。

这里侧重MemSQL系统恢复时间测试.

docker重启以后:leaf 节点的数据仍然在内存中,不需要重新加载。这也是使用Dockers的好处

但是Linux系统重启以后 ,MemSQL会重新加载数据(1个leaf节点,1千万条数据)到内存,这个过程很快,大概2分钟左右,前提是SDD 硬盘。

内存利用率变化

CPU变化

磁盘I/O读写变化

本文地址:http://keair.bhha.com.cn/quote/452.html    康宝晨 http://keair.bhha.com.cn/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号