
# 测试方法
#### 测试环境
- 区域：华东-上海二
- 可用分区：可用区4
- 分片数：16个
- 逻辑表数量：1个
- 数据量：3.2亿
- RDS规格：8vCPUs \| 16GB，16vCPUs \| 32GB，32vCPUs \| 64GB， 存储类型为"超高IO"
- 压力机（1台sysbench）：32U64G
  ![](https://support.huaweicloud.com/pwp-ddm/public_sys-resources/note_3.0-zh-cn.png)
  测试环境不同，测试结果可能会有小范围的波动，此为正常现象。
  
 
#### 测试工具
Sysbench是一款基于LuaJIT的，模块化多线程基准测试工具，常用于数据库基准测试。通过内置的数据库测试模型，采用多线程并发操作来评估数据库的性能。了解Sysbench更多详情，请访问<https://github.com/akopytov/sysbench>。
本次测试使用的[Sysbench版本](https://github.com/akopytov/sysbench/archive/1.0.20.zip)为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**
      ![](https://support.huaweicloud.com/pwp-ddm/public_sys-resources/note_3.0-zh-cn.png)
      注释掉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\*8U16G                              | 512  | 2168.748 | 43389.45  | RDS实例规格：2\*8U16G，超高IO                 |
| 1\*16U32G                             | 512  | 4117.23  | 82362.996 | RDS实例规格：2\*16U32G，超高IO                |
| 1\*32U64G                             | 1000 | 5627.754 | 112585.59 | RDS实例规格：2\*32U64G，超高IO                |
   
![](https://support.huaweicloud.com/pwp-ddm/public_sys-resources/caution_3.0-zh-cn.png)
DDM内核具备一定的过载保护能力，在过载后会触发一系列动作，例如尝试释放长时间占用系统资源的语句。触发过载保护后压测结果曲线可能会观测到抖动。触发过载说明性能已达到瓶颈，继续加压已无法获得性能提升，请尝试降低压力以获取更高的性能表现。
