云数据库RDS

    基准测试

    用户在做性能测试时,可以参考以下推荐配置和测试方法自己做,也可以发工单让百度智能云工程师协助做。

    测试环境

    下面环境,由客户根据需要选择。如果是跟其他云厂商做性能对比,注意保持多个环境一致。

    类型 说明
    客户端配置 推荐BCC配置4核8G,镜像CentOS 7.5 64位
    客户端个数 如单个客户端是瓶颈,建议采用多个客户端并行压测求取数据总和
    并发连接数 推荐20个并发,测试多组求平均值
    云数据库 RDS 实例配置 客户可根据需要选择当前售卖主流配置规格,配置越大性能越好
    网络环境 需保证客户端与云数据库 RDS 实例在同一可用区,测试结果不受网络因素影响

    测试工具

    SysBench简介

    SysBench 是一款跨平台且支持多线程的模块化基准测试工具,可以用来做 CPU/内存/磁盘IO/线程/mutex 和数据库的基准测试。目前支持的数据库有 MySQL/Oracle/PostgreSQL。

    SysBench 0.5 是基于 LuaJIT 的可脚本化的多线程基准测试工具,它常用于数据库的基准测试,也可以在不安装数据库的前提下,快速获取数据库主机的性能。以下操作都将以支持MySQL数据库为例进行。

    安装方法

    1. 数据库基准测试使用的 SysBench 版本为 0.5,点此下载
    2. SysBench 的一些安装依赖(root账号安装)。

      yum -y install gcc gcc-c++ autoconf automake make libtool bzr mysql-devel

    3. 执行如下命令安装 SysBench,以下假设安装在目录 /home/mysql/sysbench-0.5 。

      unzip sysbench-0.5.zip
      cd sysbench-0.5
      ./autogen.sh
      ./configure --prefix=/home/mysql/sysbench-0.5/
      make && make install

      注意:要求本机必须装有MySQL客户端

    测试方法

    测试场景

    本文档基于 SysBench 0.5 的 oltp.lua 脚本进行混合压测,各种类型的 SQL 占比:select:update_key:update_non_key:delete:insert = 14:1:1:1:1 。

    测试数据

    1. 库表结构

      CREATE TABLE `sbtest` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `k` int(10) unsigned NOT NULL DEFAULT '0',
      `c` char(120) NOT NULL DEFAULT '',
      `pad` char(60) NOT NULL DEFAULT '',
      PRIMARY KEY (`id`),
      KEY `k` (`k`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    2. 数据格式

      id: 1
      k: 5273
      c: 902503501-67767851-807412765-640373553-541938462-40619231-573487999-109160704-120461662-146156906
      pad: 151642452-829603952-404629406-666642176-33138146

    测试SQL

    1. 查询

      SELECT c FROM sbtest1 WHERE id=51
      SELECT c FROM sbtest1 WHERE id BETWEEN 43 AND 43+99
      SELECT c FROM sbtest1 WHERE id BETWEEN 60 AND 60+99 ORDER BY c
      SELECT SUM(K) FROM sbtest1 WHERE id BETWEEN 51 AND 51+99
      SELECT DISTINCT c FROM sbtest1 WHERE id BETWEEN 54 AND 54+99 ORDER BY c
    2. 插入

      INSERT INTO sbtest1 (id, k, c, pad) VALUES (0, 499366, '98960633772-54743256208-23159763969-65787956584-31825798401-86270736030-94250135789-27425861392-37055945206-78163709800', '54784722736-74321090296-30487485394-35643091700-34261489188')
    3. 更新

      UPDATE sbtest1 SET k=k+1 WHERE id=497476
      UPDATE sbtest1 SET c='48790759921-68407130797-95399114726-08732206562-54416332000-64051686468-52626165210-54833068892-10841816541-80972096087' WHERE id=495283
    4. 删除

      DELETE FROM sbtest1 WHERE id=485435

    测试命令

    1. 准备数据

      /home/mysql/sysbench-0.5/bin/sysbench --mysql-host=xxxx --mysql-user=xxxx --mysql-password=xxxx --mysql-port=3306 --num-threads=20 --max-time=3600 --max-requests=999999999 --db-driver=mysql --mysql-table-engine=innodb --oltp-table-size=10000000 --oltp-tables-count=64 --test=/home/mysql/sysbench-0.5/share/sysbench/oltp.lua prepare
    2. 基准压测

      /home/mysql/sysbench-0.5/bin/sysbench --mysql-host=xxxx --mysql-user=xxxx --mysql-password=xxxx --mysql-port=3306 --num-threads=20 --max-time=3600 --max-requests=999999999 --db-driver=mysql --mysql-table-engine=innodb --oltp-table-size=10000000 --oltp-tables-count=64 --test=/home/mysql/sysbench-0.5/share/sysbench/oltp.lua run
    3. 清理环境

      /home/mysql/sysbench-0.5/bin/sysbench --mysql-host=xxxx --mysql-user=xxxx --mysql-password=xxxx --mysql-port=3306 --num-threads=20 --max-time=3600 --max-requests=999999999 --db-driver=mysql --mysql-table-engine=innodb --oltp-table-size=10000000 --oltp-tables-count=64 --test=/home/mysql/sysbench-0.5/share/sysbench/oltp.lua cleanup

    SysBench 主要参数说明:

    参数 说明
    --mysql-host=xxxx 测试数据库的地址
    --mysql-port=xxxx 测试数据库的端口
    --mysql-user=xxxx 测试数据库的测试账号
    --mysql-password=xxxx 测试数据库的测试账号对应的密码
    --mysql-db=xxxx 测试数据库名字
    --num-threads 发起的并发连接数
    --mysql-table-engine=Innodb/MyISAM 测试表存储引擎
    --db-driver=mysql 表示要测试的是MySQL数据库
    --max-time 最大执行时长
    --max-requests 总请求数。可以和max_time二选一
    --test=$sysbench_path/oltp.lua 表示要调用oltp.lua脚本进行oltp测试
    --oltp_tables_count 表示要生成多少个测试表
    --oltp-table-size 表示每个表要填充多少数据量

    性能指标

    TPS

    Transactions Per Second,每秒执行的事务数,以 commit 成功次数为准。

    QPS

    Queries Per Second,每秒执行的 SQL 数(含insert、select、update、delete)。

    平均响应时间

    Response time avg,即执行每组操作,平均每个 SQL 的响应时间。

    上一篇
    概述
    下一篇
    常见问题