更新时间:2022-06-30 GMT+08:00

Sysbench

测试环境

  • 区域:中国-香港
  • 可用分区:可用区4
  • 分片数:16个
  • 逻辑表数量:1个
  • 数据量:3.2亿
  • RDS 规格:8C16G,16C32G,32C64G,超高IO
  • 压力机(1台sysbench):32C64G

测试工具

Sysbench是一款基于LuaJIT的,模块化多线程基准测试工具,常用于数据库基准测试。通过内置的数据库测试模型,采用多线程并发操作来评估数据库的性能。了解Sysbench更多详情,请访问https://github.com/akopytov/sysbench

本次测试使用的Sysbench版本为1.0.20,具体的安装命令如下:

# wget -c https://github.com/akopytov/sysbench/archive/1.0.20.zip

# yum install autoconf libtool mysql mysql-devel vim unzip

# unzip 1.0.20.zip

# cd sysbench-1.0.20

# ./autogen.sh

# ./configure

# make

# make install

测试步骤

请根据实际信息,替换数据库、连接IP与用户密码。

  1. 导入测试数据。

    1. 创建逻辑库。
    2. 使用命令行登录到DDM数据库中,创建表。

      表结构:CREATE TABLE sbtest1(

      id int UNSIGNED NOT NULL auto_increment PRIMARY KEY,

      k INTEGER UNSIGNED DEFAULT '0' NOT NULL,

      c varCHAR(1200) DEFAULT '' NOT NULL,

      pad varCHAR(1200) DEFAULT '' NOT NULL

      ) dbpartition by hash(id);

    3. 使用sysbench命令导入测试数据到数据库中。

      sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=1 --report-interval=5 --oltp-table-size=<data> --mysql-user=<user> --mysql-password=<password> --mysql-table-engine=innodb --rand-init=on --mysql-host=<host> --mysql-port=5066 --mysql-db=<db-name> --max-time=300 --max-requests=0 --oltp_skip_trx=off --oltp_auto_inc=on --oltp_range_size=5 --num-threads=256 --oltp_secondary --id-start-val=1 --id-step-val=1000 prepare

      注释掉common.lua脚本里的db_query(query)这一行。

  2. 压测数据。

    sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=1 --report-interval=1 --oltp-table-size=<data> --mysql-user=<user> --mysql-password=<password> --mysql-table-engine=innodb --rand-init=on --mysql-host=<host> --mysql-port=5066 --mysql-db=<db_name> --max-time=300 --max-requests=0 --oltp_skip_trx=off --oltp_auto_inc=on --oltp_range_size=5 --num-threads=256 --oltp_secondary --forced-shutdown=0 run

  3. 清理数据。

    sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-db=<db_name> --mysql-user=<user> --mysql-password=<password> --mysql-port=5066 --mysql-host=<host> --oltp-tables-count=64 --oltp-table-size=<data> --max-time=3600 --max-requests=0 --num-threads=200 cleanup

概念解释

  • TPS:Transaction Per Second,数据库每秒执行的事务数。
  • QPS:Query Per Second,数据库每秒执行的SQL数,包含insert、select、update、delete等。

测试数据

表1 测试列表

规格描述

规格值--sysbench oltp场景

备注

DDM

并发数

TPS

QPS

1*8C16G

512

2168.748

43389.45

RDS实例规格:2*8C16G,超高IO

1*16C32G

512

4117.23

82362.996

RDS实例规格:2*16C32G,超高IO

1*32C64G

1000

5627.754

112585.59

RDS实例规格:2*32C64G,超高IO

DDM内核具备一定的过载保护能力,在过载后会触发一些列动作,例如尝试释放长时间占用系统资源的语句。触发过载保护后压测结果曲线可能会观测到抖动。触发过载说明性能已达到瓶颈,继续加压已无法获得性能提升,请尝试降低压力以获取更高的性能表现。