目录
摘要
1测试环境以及测试用例设计
1.1测试环境
1.2测试用例设计
2百万级数据量性能测试对比
2.1数据总量
2.2性能测试报告
2.3图表分析
对于百万级数据,mysql足够了,没必要使用TiDB或者MongoDB等Nosql 数据库。
Mysql 和 TiDB 都是 4C/8G,测试接口都是通过Spring boot 微服务rest接口测试。MySQL 数据中的表和mongodb中集合都设创建了相同的索引。其中create_time 都使用了降序索引。
mysql版本:8.0
TiDB版本:5.7.25 (SQL规范跟随MySQL版本)
1.1.1 Mysql 索引
1.1.2 TiDB索引
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。
Mysql:
TiDB基本数据信息:
2.2.1用例1时间范围分页查询
请求参数:
/mysql/result/20/20/2019-09-01/2019-09-30
连续两次性能测试报告:
MySQL参考: 性能测试报告
TiDB 性能测试数据:
2.2.2用例2任务信息查询
请求参数:
/mysql/conditionOne/20/20/611607718939246592/611680047597752372
连续两次性能测试报告:
MySQL参考: 性能测试报告
TiDB 性能测试数据:
2.2.3用例3批次范围查询
请求参数:
/mysql/conditionTwo/10/20/1001,1002,1003,1004,1005,1027
连续两次性能测试报告:
MySQL参考: 性能测试报告
TiDB 性能测试数据:
2.2.4用例4任务与批次范围查询
请求参数:
/mysql/conditionThree/1/20/1001,1002,1003,1004,1005,1027/611680047593558016,611680047593558017,611680047593558020,611680047593558021,611680047593558024,611680047593558025,611680047593558030,611680047593558031,611680047593558032,611680047593558033,611680047593558035,611680047593558036,611680047593558037,611680047593558038,611680047593558039,611680047593558040
连续两次性能测试报告:
MySQL参考: 性能测试报告
TiDB 性能测试数据:
2.2.5用例5聚合查询
请求参数:
/mysql/aggregate/620656410385203201
连续两次性能测试报告:
MySQL参考: 性能测试报告
TiDB 性能测试数据:
2.3.1查询时间对比
以50%为分割线,占比少的说明效率高。用第二次性能测试采集到的性能数据来对比。
2.3.2 吞吐量对比
以50%为分割线,占比多的说明吞吐量高。用第二次性能测试采集到的性能数据来对比。
2.3.3 小结