基准测试
所有文档

          云数据库 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 的响应时间。

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