PTS的JDBC压测功能支持对MySQL(MySQL 5.x、MySQL 8)、SQL Server、PostgreSQL、MariaDB数据库进行压测。本文介绍如何使用JDBC压测功能。

背景信息

JDBC(Java Database Connectivity,Java数据库连接)通过Java API访问关系型数据库,并可对其进行增删改查等操作。特点包括:访问数据库便捷、跨平台性强、支持SQL语句,使底层更自由。

操作步骤

  1. 登录PTS控制台,在左侧导航栏中选择压测中心 > 创建场景
  2. 创建场景页面,单击JDBC压测
  3. 创建JDBC场景页面,填写场景名,然后配置JDBC连接。
    设置 说明
    数据库类型 支持数据库类型包括:MySQLSQL ServerPostgreSQLMariaDB
    JDBC URL 格式为[ip]:[port]/数据库名,例如[XX].mysql.zhangbei.rds.aliyuncs.com:3306/db
    说明 如果您在数据库类型中选择SQL Server,那么JDBC URL格式为[ip]:[port];databaseName=数据库名
    用户名 数据库登录用户名,例如user
    密码 数据库登录密码,例如password
    自动提交SQL
    • 打开开关:自动提交事务,即结束当前事务开始下一个事务。
      说明 事务通常是指用SQL脚本对数据库表进行一系列操作。
    • 关闭开关:修改数据库时,将用户操作一直处于某个事务中,直到执行一条commit提交或rollback回滚语句才会结束当前事务重新开始一个新的事务。
    隔离级别 数据库隔离级别,您可根据MySQL数据库对应设置选择相应级别,支持的类型包括:
    • DEFAULT:默认
    • TRANSACTION_NONE:未开启事务
    • TRANSACTION_READ_UNCOMMITTED:读未提交
    • TRANSACTION_READ_COMMITTED:读已提交
    • TRANSACTION_SERIALIZABLE:可串行化
    • TRANSACTION_REPEATABLE_READ:可重复读
  4. 场景配置页签下,单击+添加JDBC请求节点,为目标串联链路添加所需测试节点。
    • 基本配置区域
      相关基本配置 说明
      查询 填写需要被压测的SQL语句。
      说明 如果要在一个JDBC请求节点中执行多条SQL语句,查询类型必须选择Callable Statement,每条语句用半角分号(;)隔开,JDBC URL后还要添加?allowMultiQueries=true
      查询类型 JDBC中被压测SQL语句类型,包括:
      • Select Statement:适用于JDBC请求内容为一条查询语句的情况。
      • Update Statement:适用于JDBC请求内容为一条更新语句的情况。
      • Callable Statement:是为DBMS(Database Management System,数据库管理系统)提供调用MySQL数据库中存储过程的接口。
      • Prepared Select Statement:适用于JDBC只执行一次的查询语句的情况。
      • Prepared Update Statement:适用JDBC只执行一次的更新语句的情况。
      • Commit:适用于JDBC将未执行的SQL语句写入库表的情况。
      • Rollback:适用于JDBC回滚与撤销SQL脚本执行的情况。
      • AutoCommit(false):适用于JDBC自动提交模式为假的情况。
      说明 使用占位参数时,选择对应查询的Prepared类型。
      查询超时时间 施压端等待被压测端响应的时间限制,单位为秒。例如5
    • 占位参数区域

      在JDBC中使用占位参数能能防止SQL注入、提高SQL执行效率。

      设置 说明
      参数类型 输入占位参数的类型。
      说明 支持MySQL数据库的数据类型。
      参数值 输入占位参数值。

      示例:

      以被压测SQL语句select * from mydb where id = ?为例,在占位参数参数类型处输入Integer,在参数值处输入1,则最后生效的SQL为select * from mydb where id = 1。该SQL会在数据库中生效,并显示在数据库中。

      说明 参数类型与参数值要和SQL语句中的半角问号(?)严格对应。
    • 出参设置页签与检查点设置页签,进行设置。具体操作,请参见出参与检查点
  5. 根据不同压测场景的需求,添加控制器和定时器。
    • 场景配置页签下,单击+添加控制器选择所需的控制器。
      • 循环控制器:控制所含测试节点应循环执行的次数。

        选择循环控制器后,单击其右侧的循环控制器的更多图标图标,选择添加需循环执行的测试节点,并设置循环次数。压测时,会将此循环控制器下的测试节点按序执行设置的次数。

      • 事务控制器:事务控制器下所包含的所有测试节点将会被算作为一个事务。其包含生成父样本是否包含样品中定时器和前后程序的持续时间两个设置项。
        • 生成父样本
          • 开启开关:该事务控制器下各测试节点自身的压测结果不会在压测报告中独立输出,而会被聚合作为事务控制器的结果呈现在报告中。
          • 关闭开关:该事务控制器以及其包含的测试节点的压测结果均会显示在报告中。
        • 是否包含样品中定时器和前后程序的持续时间:若选择开启此开关,则压测报告中事务控制器的平均响应时间为所有测试节点、定时器以及前后置处理器的平均响应时间之和。若不开启此开关,则事务控制器的平均响应时间仅为所有测试节点平均响应时间之和。
      • 仅一次控制器:仅一次控制器下添加的节点仅会被执行一次。
    • 场景配置页签下,单击+添加定时器选择所需的定时器。
      • 常量定时器:可设置停顿时长,表示压测过程中,在此处停顿的时长,单位为毫秒。
      • 同步定时器:可设置停顿时长模拟用户数,表示在一定时间内先等待达到一定用户数然后触发测试,但若在设定时间内未达到指定用户数,则不会继续等待,直接触发测试。
      • 统一随机定时器:统一随机定时器用于控制停顿时长,可设置延迟基准可变跨度。延迟基准为固定停顿时间,可变跨度为随机停顿时间的最大值。统一随机定时器的停顿时长为延迟基准所设的固定停顿时间加上可变跨度所设时间范围内的随机值。各随机值出现的概率相等。
      • 高斯定时器:高斯定时器与统一随机定时器类似,同样用于设置停顿时长,可设置延迟基准可变跨度。若要求随机停顿时间符合正态分布,可使用高斯定时器。
      • 固定吞吐量定时器:固定吞吐量定时器用于控制吞吐量,使测试节点按吞吐量执行。可设置条件和对应的吞吐量。条件包含仅当前线程所有活跃线程当前链路下活跃线程全局活跃线程当前链路下全局活跃线程
  6. 单击施压配置页签,设置JDBC的压测模式。
    压测配置 描述
    压力来源 本次压测使用的网络类型,包括国内公网阿里云VPC内网两种类型。
    说明 若选择使用阿里云VPC内网进行压测,则还需选择地域。
    并发数 指同时发送压测请求的用户数量。最低设置为10,最高设置取所购买资源包的最高并发规格。
    指定IP数 指定施压引擎的数量。若增加施压引擎,则计费也会相应增加。计费规则为计费VUM=引擎数×500×压测时长(分钟)。
    说明
    • 增加引擎数会使得计费增加,请关注施压配置页签右侧压力预估图的预估消耗VUM数。
    • 可设置的最大引擎数受资源包限制,具体信息,以控制台的指定IP数为准。
    • 为合理利用资源,增加后的引擎数不可超过配置的并发数。
    • 若无法满足需求,请提交工单申请扩容。
    压测时长 建议压测时长不低于2分钟,总时长默认不可超过24小时。如有特殊需求,请提交工单
    流量模型 压测的流量模型包含以下三种:
    • 均匀递增:从0开始均匀递增,达到最大并发后按照最大并发持续施压,不可指定循环次数。
    • 阶梯递增:从0开始按照递增阶梯逐步递增,达到最大并发后按照最大并发并持续施压。不可指定循环次数。
    • 固定压力值:以配置的固定并发值进行施压。
  7. 可选:创建场景页面下方,单击调试场景,对配置的场景进行调试,验证配置是否正确。
  8. 单击保存去压测,在对话框中单击确定