本文详细介绍了PolarDB-X的Sysbench测试设计、测试过程和测试结果。
背景信息
Sysbench是一款开源的、模块化的、跨平台的多线程性能测试工具,可以执行数据库在CPU、内存、线程、IO等方面的性能测试。本文将验证PolarDB-X在Sysbench多种场景中的性能表现。
测试设计
测试数据量
Sysbench数据包含16张表,每张表1千万的数据量。
测试所用实例规格
节点规格
节点数
4C32G
2
4C32G
4
8C64G
2
8C64G
4
测试所用压力机规格
ecs.g7ne.8xlarge(32 vCPU,128 GB内存)
测试方法
准备压力机ECS
需准备一个ECS(建议配置为32 vCPU 128 GB内存,避免在测试高规格集群时,压力机成为瓶颈),后续操作步骤中涉及的数据准备、运行压测等使用的都是这台ECS机器。
说明请将测试所用ECS部署在VPC网络内。请记住该VPC的名称和ID,后续的所有实例都将部署在该VPC内。
准备压测所用PolarDB-X实例
调整实例参数
说明为了在压测场景下达到最佳性能,需要调整部分PolarDB-X计算层实例参数。
修改参数ENABLE_COROUTINE的值为true,XPROTO_MAX_DN_CONCURRENT和XPROTO_MAX_DN_WAIT_CONNECTION的值为4000,详细操作步骤请参见参数设置。
通过命令行连接到PolarDB-X实例,在同一会话内执行如下SQL语句,关闭日志记录与CPU采样统计:
set global RECORD_SQL=false; set global MPP_METRIC_LEVEL=0; set global ENABLE_CPU_PROFILE=false; set global ENABLE_BACKGROUND_STATISTIC_COLLECTION=false; set global ENABLE_STATISTIC_FEEDBACK=false; set global ENABLE_DEADLOCK_DETECTION=false; set global ENABLE_TRANS_LOG=false; set global GROUP_PARALLELISM=1; set global CONN_POOL_MAX_POOL_SIZE=500; set global ENABLE_STATEMENTS_SUMMARY=false; set global ENABLE_AUTO_SAVEPOINT=false; set global INNODB_ADAPTIVE_HASH_INDEX=off; set global TABLE_OPEN_CACHE = 20000; set global SHARE_READ_VIEW = false; set global CONN_POOL_XPROTO_XPLAN = true; set global NEW_SEQ_GROUPING_TIMEOUT=30000;
准备压测数据
下载Sysbench压测工具包sysbench.tar.gz,并解压。
tar xzvf sysbench.tar.gz cd sysbench/
安装编译所需依赖库:
yum -y install make automake libtool pkgconfig libaio-devel mysql-devel ./autogen.sh ./configure make -j make install
执行命令
sysbench --version
,返回sysbench 1.1.0
证明压测工具包安装成功。也可以通过GitHub下载开源版本的Sysbench,请参见GitHub下载链接。
准备压测配置
创建配置文件sysb.conf,将PolarDB-X连接信息填入配置文件,其中配置文件以及主要参数的解读如下:
mysql-host='{HOST}' mysql-port='{PORT}' mysql-user='{USER}' mysql-password='{PASSWORD}' mysql-db='sbtest' db-driver='mysql' percentile='95' histogram='on' report-interval='1' time='60' rand-type='uniform'
参数说明:
percentile:响应时间采样的百分位;
histogram:是否展示响应时间分布直方图;
report-interval:显示实时结果的时间间隔,单位为秒;
time:压测时长,单位为秒;
rand-type:随机数的分布模式。
导入压测数据
sysbench --config-file='sysb.conf' --create-table-options='single locality="balance_single_table=on"' --tables='16' --table-size='10000000' --threads='16' --auto_inc='off' oltp_point_select prepare
参数说明:
config-file:指定通用配置文件;
create-table-options:指定建表模式;
tables:表的数量;
table-size:单张表的数据量;
threads:导入时的并发数;
auto_inc:是否使用auto_increment。
执行压测
以下列举了Sysbench 6种不同场景测试的命令,建议首次压测增加压测时长。
说明命令涉及的相关参数说明如下:
db-ps-mode:是否开启prepare模式;
mysql-ignore-errors:忽略如锁冲突等原因产生的MySQL错误代码;
range-size:指定range查询的范围大小。
点查:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={并发数} oltp_point_select run
只读:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --range-size=5 --threads={并发数} oltp_read_only run
读写:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --range-size=5 --threads={并发数} oltp_read_write run
按索引更新:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={并发数} oltp_update_index run
非索引更新:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={并发数} oltp_update_non_index run
写入:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={并发数} oltp_write_only run
测试结果
5.4.15-16704996
以下结果均以QPS作为衡量性能的标准。
点查场景结果(point_select)
实例规格 | 并发数 | QPS |
4C32G * 2 | 600 | 65611.43 |
4C32G * 4 | 1000 | 122036.76 |
8C64G * 2 | 1000 | 112588.98 |
8C64G * 4 | 2000 | 242439.92 |
只读场景结果(read_only)
实例规格 | 并发数 | QPS |
4C32G * 2 | 200 | 72321.57 |
4C32G * 4 | 200 | 123499.89 |
8C64G * 2 | 200 | 112588.98 |
8C64G * 4 | 1000 | 235696.94 |
读写场景结果(read_write)
实例规格 | 并发数 | QPS |
4C32G * 2 | 100 | 45417.06 |
4C32G * 4 | 200 | 84128.1 |
8C64G * 2 | 300 | 80474.9 |
8C64G * 4 | 600 | 143958.78 |
按索引更新场景结果(update_index)
实例规格 | 并发数 | QPS |
4C32G * 2 | 300 | 31744.92 |
4C32G * 4 | 300 | 64425.82 |
8C64G * 2 | 600 | 48569.83 |
8C64G * 4 | 1200 | 92562.98 |
非索引更新场景结果(update_non_index)
实例规格 | 并发数 | QPS |
4C32G * 2 | 300 | 42117.02 |
4C32G * 4 | 300 | 54015.52 |
8C64G * 2 | 400 | 45966.4 |
8C64G * 4 | 800 | 113690.88 |
写入场景结果(write_only)
实例规格 | 并发数 | QPS |
4C32G * 2 | 200 | 34261.48 |
4C32G * 4 | 200 | 59498.09 |
8C64G * 2 | 300 | 52285.58 |
8C64G * 4 | 400 | 89546.16 |
5.4.15-16715927
以下结果均以QPS作为衡量性能的标准。
点查场景结果(point_select)
实例规格 | 并发数 | QPS |
4C32G * 2 | 600 | 71399.03 |
4C32G * 4 | 1000 | 122491.05 |
8C64G * 2 | 1000 | 121634.04 |
8C64G * 4 | 2000 | 235068.85 |
只读场景结果(read_only)
实例规格 | 并发数 | QPS |
4C32G * 2 | 200 | 62859.64 |
4C32G * 4 | 200 | 117161.64 |
8C64G * 2 | 200 | 123697.56 |
8C64G * 4 | 1000 | 240998.7 |
读写场景结果(read_write)
实例规格 | 并发数 | QPS |
4C32G * 2 | 100 | 43023.64 |
4C32G * 4 | 200 | 84318.95 |
8C64G * 2 | 300 | 86702.66 |
8C64G * 4 | 600 | 143754.44 |
按索引更新场景结果(update_index)
实例规格 | 并发数 | QPS |
4C32G * 2 | 300 | 31837.19 |
4C32G * 4 | 300 | 64450.22 |
8C64G * 2 | 600 | 50669.57 |
8C64G * 4 | 1200 | 92942.66 |
非索引更新场景结果(update_non_index)
实例规格 | 并发数 | QPS |
4C32G * 2 | 300 | 31437.64 |
4C32G * 4 | 300 | 70815.01 |
8C64G * 2 | 400 | 52093.29 |
8C64G * 4 | 800 | 123643.37 |
写入场景结果(write_only)
实例规格 | 并发数 | QPS |
4C32G * 2 | 200 | 34026.33 |
4C32G * 4 | 200 | 58624.59 |
8C64G * 2 | 300 | 53741.5 |
8C64G * 4 | 400 | 86151.32 |
5.4.16-16717637
以下结果均以QPS作为衡量性能的标准。
点查场景结果(point_select)
实例规格 | 并发数 | QPS |
4C32G * 2 | 600 | 74650.4 |
4C32G * 4 | 1000 | 106492.52 |
8C64G * 2 | 1000 | 127032.44 |
8C64G * 4 | 2000 | 217089.44 |
只读场景结果(read_only)
实例规格 | 并发数 | QPS |
4C32G * 2 | 200 | 69994.6 |
4C32G * 4 | 200 | 116932.02 |
8C64G * 2 | 200 | 112704.98 |
8C64G * 4 | 1000 | 238991.34 |
读写场景结果(read_write)
实例规格 | 并发数 | QPS |
4C32G * 2 | 100 | 44818.53 |
4C32G * 4 | 200 | 84642.45 |
8C64G * 2 | 300 | 81493.08 |
8C64G * 4 | 600 | 140726.78 |
按索引更新场景结果(update_index)
实例规格 | 并发数 | QPS |
4C32G * 2 | 300 | 31393.88 |
4C32G * 4 | 300 | 63485.13 |
8C64G * 2 | 600 | 47620.55 |
8C64G * 4 | 1200 | 92960.04 |
非索引更新场景结果(update_non_index)
实例规格 | 并发数 | QPS |
4C32G * 2 | 300 | 45550.3 |
4C32G * 4 | 300 | 54273.97 |
8C64G * 2 | 400 | 62637.64 |
8C64G * 4 | 800 | 121596.45 |
写入场景结果(write_only)
实例规格 | 并发数 | QPS |
4C32G * 2 | 200 | 33277.91 |
4C32G * 4 | 200 | 57892.17 |
8C64G * 2 | 300 | 51673.2 |
8C64G * 4 | 400 | 86455.57 |
5.4.17-16835173
以下结果均以QPS作为衡量性能的标准。
点查场景结果(point_select)
规格 | 并发 | QPS |
4C32G*2 | 600 | 86033.36 |
4C32G*4 | 1000 | 166897.13 |
8C64G*2 | 1000 | 154769.16 |
8C64G*4 | 2000 | 305428.85 |
只读场景结果(read_only)
规格 | 并发 | QPS |
4C32G*2 | 200 | 94950.84 |
4C32G*4 | 200 | 157773.44 |
8C64G*2 | 200 | 162426.9 |
8C64G*4 | 1000 | 303120.64 |
读写场景结果(read_write)
规格 | 并发 | QPS |
4C32G*2 | 100 | 59371.01 |
4C32G*4 | 200 | 106015.85 |
8C64G*2 | 300 | 108037.57 |
8C64G*4 | 600 | 185936.25 |
按索引更新场景结果(update_index)
规格 | 并发 | QPS |
4C32G*2 | 300 | 32958.09 |
4C32G*4 | 300 | 62640.72 |
8C64G*2 | 600 | 52925.62 |
8C64G*4 | 1200 | 100219.02 |
非索引更新场景结果(update_non_index)
规格 | 并发 | QPS |
4C32G*2 | 300 | 44617.7 |
4C32G*4 | 300 | 91142.8 |
8C64G*2 | 400 | 78510.47 |
8C64G*4 | 800 | 143923.67 |
写入场景结果(write_only)
规格 | 并发 | QPS |
4C32G*2 | 200 | 36829.85 |
4C32G*4 | 200 | 60741.75 |
8C64G*2 | 300 | 63400.16 |
8C64G*4 | 400 | 100897.1 |
5.4.18-16977056
以下结果均以QPS作为衡量性能的标准。
点查场景结果(point_select)
规格 | 并发 | QPS |
4C32G*2 | 600 | 86076.19 |
4C32G*4 | 1000 | 171788.14 |
8C64G*2 | 1000 | 153816.64 |
8C64G*4 | 2000 | 310194.34 |
只读场景结果(read_only)
规格 | 并发 | QPS |
4C32G*2 | 200 | 97286.57 |
4C32G*4 | 200 | 178936.19 |
8C64G*2 | 200 | 159390.63 |
8C64G*4 | 1000 | 307663.98 |
读写场景结果(read_write)
规格 | 并发 | QPS |
4C32G*2 | 100 | 56500.61 |
4C32G*4 | 200 | 107762.36 |
8C64G*2 | 300 | 119275.8 |
8C64G*4 | 600 | 170881.36 |
按索引更新场景结果(update_index)
规格 | 并发 | QPS |
4C32G*2 | 300 | 30654.23 |
4C32G*4 | 300 | 64730.37 |
8C64G*2 | 600 | 65536.57 |
8C64G*4 | 1200 | 95629.61 |
非索引更新场景结果(update_non_index)
规格 | 并发 | QPS |
4C32G*2 | 300 | 44992.24 |
4C32G*4 | 300 | 97440.82 |
8C64G*2 | 400 | 99340.7 |
8C64G*4 | 800 | 131181.64 |
写入场景结果(write_only)
规格 | 并发 | QPS |
4C32G*2 | 200 | 35168.48 |
4C32G*4 | 200 | 64152.25 |
8C64G*2 | 300 | 74929.45 |
8C64G*4 | 400 | 93430.79 |
- 本页导读 (0)