Sysbench(Bulk insert)测试报告
测试背景
XX通过TPC-DS与TPC-H的基准测试规则,主要验证了select的场景测试,TPC-DS与TPC-H的性能场景测试有限,无法满足点查、更新、批量写入的性能测试场景,因此采用Sysbench基准测试工具对AtomData进行批量写入的场景覆盖测试
sysbench介绍
sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况,它主要包括以下几种方式的测试:磁盘io性能、数据库性能、内存分配及传输速度等,详细的介绍见https://github.com/akopytov/sysbench
测试场景
已行数为测试条件,主要验证测试在不同并发数量的情况下,AtomData针对不同的数据量的性能结果表现
行数 |
并发 |
用途 |
|
场景一 |
10,0000 |
依据sysbench的策略( 注:平均每批写入3000行) |
固定的数据量,向同一张表中写入的性能测试 |
100,0000 |
|||
500,0000 |
|||
1000,0000 |
|||
场景二 |
10,0000 |
5,10,20,30,40,50,100,500 |
固定的数据量,向不同表中插入的性能测试 |
100,0000 |
|||
500,0000 |
|||
1000,0000 |
场景一结果结论
向同一张表中批量写入10,0000、100,0000、500,0000、1000,0000数据量下的性能表现如下:
100000 |
1000000 |
5000000 |
10000000 |
||||
TPS |
Latency(ms) |
TPS |
Latency(ms) |
TPS |
Latency(ms) |
TPS |
Latency(ms) |
154031.67 |
242.85 |
98702.92 |
2808.09 |
136786.38 |
438.66 |
125196.21 |
690.95 |
TPS趋势图分析

Latency趋势图分析
场景二测试结论
不同并发条件下,向表中批量写入数据,分别在10,0000、100,0000、500,0000、1000,0000数据量下的性能表现如下:
100000 |
1000000 |
5000000 |
10000000 |
|||||
并发 |
TPS |
Latency(ms) |
TPS |
Latency(ms) |
TPS |
Latency(ms) |
TPS |
Latency(ms) |
5 |
454013.50 |
0.28 |
535185.24 |
377.39 |
789788.56 |
314.64 |
634465.78 |
478.40 |
10 |
713894.61 |
0.60 |
1284609.86 |
309.55 |
1322141.07 |
922.95 |
1310269.59 |
495.18 |
20 |
711277.57 |
1.58 |
1644438.88 |
381.60 |
2681489.58 |
433.41 |
2461425.98 |
597.29 |
30 |
657665.59 |
2.28 |
1862380.81 |
444.81 |
3424732.11 |
537.54 |
3167016.87 |
887.52 |
40 |
714636.50 |
6.09 |
1930607.34 |
8.84 |
3116464.31 |
791.70 |
3671649.27 |
538.87 |
50 |
536183.74 |
12.53 |
1865576.52 |
9.09 |
2980255.46 |
918.57 |
3420850.26 |
882.68 |
60 |
488946.70 |
21.53 |
2006196.55 |
32.16 |
2968906.99 |
852.02 |
3442247.53 |
1029.51 |
100 |
489826.78 |
25.83 |
1954702.01 |
125.63 |
2472913.97 |
1711.91 |
3252786.63 |
1446.31 |
500 |
515567.16 |
401.69 |
1046660.33 |
1440.37 |
1559162.43 |
2403.95 |
备注:bulk_insert的Latency的取值为max时间
TPS趋势图分析
- 100000行数据测试结果
- 建议的并发数:10个并发,每秒的事务数为713894,此时批量写入到表的性能相对较好
- 峰值数:714636,之后,随着并发数的增加,性能有下降趋势,在并发数为60~100之间性能稳定
- 1000000行数据测试结果
- 建议的并发数:40~100个并发之间,事务数平均在2000000之间,此时批量写入到表的性能相对稳定
- 峰值数:2006196,之后随着并发数的增加,性能在下降
- 5000000行数据测试结果
- 建议的并发数:30个并发,每秒的事务数为3424732,此时批量写入到表的性能最佳
- 峰值数:3424732,之后随着并发数量的增加,性能在下降
- 10000000行数据测试结果
- 建议的并发数:40个并发,每秒的事务数可达3671649,此时写入的性能最佳
- 峰值数:3671649,之后随着并发数的增加,性能在逐渐的走下降趋势
Latency趋势图分析
- latency的最佳与TPS的测试结果相对应,不同数据量在不同并发下的最佳的延时对应着最佳的TPS
- 100000行数据:延时较低,可以忽略不计
- 1000000行数据:并发40时,延时最佳为8.84ms
- 5000000行数据:并发20或30时,延时最佳为433.41ms
- 10000000行数据:并发40时,延时最佳为538.87ms
压测环境
sysbench Version |
1.0.18 |
OS |
Ubuntu 20.04 (5.4.0-104-generic x86_64) |
Memory |
128GB |
Cores |
32C |
Disk |
200G HDD |
Network |
万兆 |
测试策略
- 手动创建数据库,示例命名为z_syw_sysbench
- 使用sysbench向数据库z_syw_sysbench的库中创建10张表
- 根据不同的测试维度,向每个表中插入测试场景表中给定的行数(如10万行)
- 每个配置下测试600秒
- 每10秒进行一次采样
- 重复执行三次,取平均值
- 针对不同的测试维度,按照sysbench给定的脚本进行测试
测试语法
INSERT INTO sbtest%u (id, k) VALUES (x,x),(x,x).......
测试脚本
###准备数据 sysbench /usr/share/sysbench/oltp_insert.lua --tables=5 --table_size=1 --mysql-host=192.168.30.118 --mysql-port=3001 --mysql-db=syw_sysbench --mysql-user=kepler --mysql-password=afdd0b4ad2ec172c586e2150770fbf9e prepare ###运行workload sysbench /usr/share/sysbench/oltp_insert.lua --tables=5 --table_size=1000000000 --threads=20 --mysql-host=192.168.30.118 --mysql-port=3001 --mysql-db=syw_sysbench --mysql-user=kepler --mysql-password=afdd0b4ad2ec172c586e2150770fbf9e --create_secondary=off --time=1600 --report-interval=3 run ###清空数据 sysbench /usr/share/sysbench/oltp_insert.lua --tables=5 --table_size=1 --mysql-host=192.168.30.118 --mysql-port=3001 --mysql-db=syw_sysbench --mysql-user=kepler --mysql-password=afdd0b4ad2ec172c586e2150770fbf9e prepare
资源利用率
如下示例:5000000行数据进行测试时的资源利用率,其他的内容详见语雀记录
磁盘IO使用率
- 从IO的使用率曲线可以明确得出结论
- 并发数从1增加到100时,IO使用率呈下降趋势
- 当并发数是500时,IO使用率相比并发数是30到60之间有了增加的趋势
- 并发数30到60之间,IO使用率最低
CPU使用率
- 从CPU的使用率曲线得出如下结论
- 当并发数是20时,控制节点CPU使用率占比最高,达到了100%
- 随着并发数的增加,控制节点CPU使用率在逐渐的呈下降趋势
- 并发数越大,控制节点的CPU使用率越低
写入TPS
- 从写入TPS的曲线图得出如下结论
- 最大的写入TPS在160000行每秒,且相对比较稳定,曲线的波动较小
- 最低的写入TPS也在84235行每秒
- (补充)写入的TPS波动曲线与写入流量的曲线表现一致
写入响应时间
- 从写入响应时间的曲线得出如下结论
- 随着并发数从2增加到100,写入的时间整体呈上升趋势
- 并发数等于500时,写入响应时间相比并发数等于100有了明显了下降趋势
磁盘IO吞吐
- 从磁盘IO吞吐曲线图得出如下结论
- 等并发数等于30时,磁盘worker_avg_read_bytes_ratio的IO吞吐达到了最高值,每秒153MB
- 相比而言,并发数等于50之后,随着并发数的持续增加,磁盘worker_avg_read_bytes_ratio的IO吞吐呈下降趋势
1.作者:Syw 2.出处:http://www.cnblogs.com/syw20170419/ 3.本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 4.如果文中有什么错误,欢迎指出。以免更多的人被误导。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-04-14 常见的在线教育平台