toadb性能测试

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: ToaDB是一款数据库系统,其测试工具集支持自动化功能及性能测试。功能测试脚本位于`toadb/src/test/`,需先编译`tsql`工具,运行`startTest.sh`即可开始测试并记录结果。性能测试工具位于源码根目录`toadb/test/benchmark/`,包括数据构建与测试两部分,可通过`benchmarkBuildData.sh`和`benchmarkRun.sh`脚本执行。

[toc]

概要说明

软件的迭代开发过程中,它的功能,稳定性,性能,易用性能各方面都在发生着变化,随着软件的庞大,已经不能通过人工手段进行觉察,所以需要配套测试工具,由自动化来验证原有功能的完整性,和增加功能带来的变化效果。

在toadb起始,我们准备了两套自动化测试工具集,一套是功能测试,一套是性能兼稳定性测试,它们都是通过shell脚本来编写,调用客户端工具tsql来执行SQL。

toadb开源地址:
toadb-gitcode
toadb-gitee

功能测试

功能测试自动化脚本位于,toadb/src/test/下,使用的前提是,在toadb/src下执行make client,将tsql工具编译出来。

然后在命令行运行./src/test/startTest.sh,它会将结果输出到当前终端和当前目录下的.log文件中。

性能测试工具

在源码根目录下toadb/test/benchmark/,模拟TPC-B标准实现了四张表的增删改查。
需要两步来执行:

  • 创建测试表与数据
    这一步是由benchmarkBuildData.sh来完成,同时需要输入scale因子,它会将同名表删除,再创建新的表,同时插入新的数据。数据量根据scale 乘以每张表的初始数量。

测试会创建以四张表,toad_historytoad_branchestoad_tellerstoad_accounts

  • 测试
    测试是由benchmarkRun.sh脚本来完成,需要输入 scale因子,测试模式,运行时间,输出间隔时间。其中scale因子需要和创建的测试数据一致,运行时间以秒为单位,输出间隔默认为10s打印一次结果。

测试模式用数字表式,有三种模式可选:

  • 1 是TPC-B模式, 混合读写模式;
  • 2 是update模式, 只执行udpate SQL语句;
  • 3 是select 模式, 也就是只读模式;

性能测试数据

toadb-06 测试

  • 测试配置
    测试机配置 1CPU, 8*2 cores ,2.5GHZ
    磁盘 SSD

  • 测试数据量
    scale = 10
    最大表10*100000条数据(一百万条)

  • 加载数据时间
    用时12h2m2s

[senllang@hatch benchmark]$ ./benchmarkBuildData.sh 10
... 

insert into toad_accounts aid:1000000
load toad_accounts endTime: 2024-01-26 02:35:09
begin time:2024-01-25 14:33:07
end time  :2024-01-26 02:35:09
---------------------------------------------------------
load data finish.
total elapse time: 12h2m2s
create table elapse time:
total of load table data elapse time: 12h2m2s
total of load toad_branches data elapse time:
total of load toad_tellers data elapse time:
total of load toad_accounts data elapse time: 12h2m2s
  • 加载数据大小

    [senllang@hatch toadbtest]$ ll -h
    -rw-r--r--. 1 senllang develops 732K Jan 26 02:35 grp_toad_accounts
    -rw-r--r--. 1 senllang develops 8.0K Jan 25 14:33 grp_toad_branches
    -rw-r--r--. 1 senllang develops 4.0K Jan 25 14:33 grp_toad_history
    -rw-r--r--. 1 senllang develops 8.0K Jan 25 14:33 grp_toad_tellers
    -rw-r--r--. 1 senllang develops 143M Jan 26 02:35 toad_accounts
    -rw-r--r--. 1 senllang develops  16K Jan 25 14:33 toad_branches
    -rw-r--r--. 1 senllang develops 4.0K Jan 25 14:33 toad_history
    -rw-r--r--. 1 senllang develops  20K Jan 25 14:33 toad_tellers
    
  • 只读测试
    ```shell
    [senllang@hatch benchmark]$ ./benchmarkRun.sh 10 3 600 5
    scale=10 runmode=3
    command infomation:/home/senllang/Dev/toadb/src/tools/tsql/toadsql -D /home/senllang/toadbtest/ -C
    datadir infomation:/home/senllang/toadbtest/
    pwd : /home/senllang/Dev/toadb/test/benchmark
    nbranches :10
    ntellers :100
    naccounts :1000000

Test process elapse(s) 570 tps=136.68
Test process elapse(s) 580 tps=136.70
Test process elapse(s) 590 tps=136.70

Test process elapse(s) 600 tps=136.69

test end.............
begin time: 2024-01-26 07:50:25
end time: 2024-01-26 08:00:26
Test process total runtimes(s) :10m1s
Test process total transactions :82156
Test process average tps=136.69

```

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
1月前
|
缓存 监控 数据挖掘
C# 一分钟浅谈:性能测试与压力测试
【10月更文挑战第20天】本文介绍了性能测试和压力测试的基础概念、目的、方法及常见问题与解决策略。性能测试关注系统在正常条件下的响应时间和资源利用率,而压力测试则在超出正常条件的情况下测试系统的极限和潜在瓶颈。文章通过具体的C#代码示例,详细探讨了忽视预热阶段、不合理测试数据和缺乏详细监控等常见问题及其解决方案,并提供了如何避免这些问题的建议。
59 7
|
3月前
|
SQL 监控 测试技术
如何开展性能测试
本文详细介绍了作者在性能测试中的一次实战经历。文章首先概述了一个理想的性能测试流程,并以公司微信会员系统的性能测试为例,具体说明了从获取需求到最终报告的全过程。内容涵盖了测试计划制定、环境搭建、测试脚本开发、执行测试及监控调试等多个方面,并强调了理解和熟悉系统业务的重要性。通过实际案例展示了如何发现性能瓶颈并提出优化建议。
66 3
如何开展性能测试
|
5月前
|
监控 测试技术 应用服务中间件
性能测试:性能测试计划
性能测试计划是在进行软件或系统的性能测试之前制定的详细计划和指导文件。它描述了所需性能测试的目标、范围、测试环境、资源需求、测试策略、测试用例、时间表等重要信息。
|
5月前
|
运维 测试技术 双11
什么是性能测试,一篇文章告诉你!
性能测试评估系统在现实负载下的性能和可靠性,包括响应时间、吞吐量和稳定性。目的是发现瓶颈、评估系统能力、优化性能和确保可靠性。在**双十一大促**等高并发场景下,性能测试至关重要。它有助于合理规划资源,降低成本,提升效率。测试工程师需掌握性能调优,理解压力曲线图,识别最佳并发用户数和最大承载点。通过测试,确保系统在最佳效率下运行,避免资源浪费和用户满意度下降。
|
监控 测试技术 应用服务中间件
系统性能测试
系统性能测试
159 0
|
存储 NoSQL 中间件
性能测试的初步认识
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
758 2
性能测试的初步认识
|
测试技术 索引
性能测试 接口性能测试需要注意的点
性能测试 接口性能测试需要注意的点
1549 0
|
缓存 负载均衡 监控
性能测试之思
在性能测试中,涉及的性能指标有很多,强行记忆理解可能是一件很吃力的事情。对性能指标进行分层划分,这样有助于记忆和理解。
|
缓存 运维 前端开发
|
存储 缓存 算法
Android内存性能测试
Android应用大部分性能问题归根结底都会成为内存的问题,今天我们就先以Out of Memory(OOM)为起点介绍一下Android内存的原理以及排查内存问题的方法。
347 0
Android内存性能测试