性能测试报告

更新时间:
复制 MD 格式

本文介绍基于YCSB(Yahoo! Cloud Serving Benchmark)对PolarDB MySQL文档数据库(兼容MongoDB协议)能力的性能测试结果,包括加载数据、纯读、读写混合和纯写等多种场景下的QPS与延迟指标。

测试环境

本次性能测试使用的环境配置如下表所示。

项目

配置

PolarDB集群

引擎为MySQL 8.0.2,集群版系列,集群规格为polar.mysql.x8.xlarge(864 GB),存储类型为PSL5。

测试客户端

阿里云ECS实例,规格为ecs.c6e.2xlarge(816 GB),与PolarDB集群位于同一VPC内。

测试工具

本次测试使用YCSB(Yahoo! Cloud Serving Benchmark)作为基准测试工具。YCSB是一款广泛使用的键值存储性能测试框架,支持多种数据库引擎,能够模拟真实业务场景下的读写负载。

测试数据模型为每条文档包含10个字段,每个字段100字节,单条文档大小约为1 KB。

性能测试

测试场景

本次性能测试涵盖以下四种场景。

场景

读写比例

说明

加载数据(Load)

纯写入

将测试数据批量加载到数据库中。

纯读(Read Only)

读:写 = 100:0

所有请求均为读操作,用于评估纯读场景下的吞吐量和延迟。

读写混合(Read/Write Mix)

读:写 = 50:50

读操作和写操作各占50%,用于评估混合负载下的性能表现。

纯写(Write Only)

读:写 = 0:100

所有请求均为写操作,用于评估纯写场景下的吞吐量和延迟。

测试指标

本次测试使用以下指标衡量性能表现。

指标

说明

QPS

每秒处理的请求数(Queries Per Second),数值越高表示吞吐量越大。

RAL(ms)

读操作平均延迟(Read Average Latency),单位为毫秒,数值越低表示读操作响应越快。

WAL(ms)

写操作平均延迟(Write Average Latency),单位为毫秒,数值越低表示写操作响应越快。

测试结果

下表展示了不同线程数和场景下的性能测试结果。

测试场景

线程数

QPS

RAL(ms)

WAL(ms)

加载数据

32

21,020.8

-

1.94

纯读(r:w=100:0)

16

56,722.7

0.27

-

32

115,369.5

0.27

-

读写混合(r:w=50:50)

16

29,225.7

0.32

0.76

32

41,533.0

0.39

1.14

纯写(r:w=0:100)

16

18,455.8

-

0.86

32

25,791.0

-

1.23

说明
  • 纯读场景下,QPS随线程数增加近线性增长,32线程时达到115,369.5 QPS,读延迟稳定在0.27 ms。

  • 读写混合场景下,读延迟和写延迟均保持在较低水平,整体性能表现均衡。

  • 纯写场景下,32线程时QPS可达25,791.0,写延迟为1.23 ms。

测试命令参考

以下为YCSB测试中使用的命令示例。您可以根据实际需要调整参数值。

  1. 加载数据

    ./bin/ycsb load mongodb -s \
      -p workload=site.ycsb.workloads.CoreWorkload \
      -p recordcount=10000000 \
      -p mongodb.url="mongodb://<user>:<password>@<endpoint>:<port>/<db>" \
      -p core_workload_insertion_retry_limit=3 \
      -threads <线程数>
  2. 运行测试

      ./bin/ycsb run mongodb -s \
      -p workload=site.ycsb.workloads.CoreWorkload \
      -p recordcount=10000000 \
      -p operationcount=10000000 \
      -p insertproportion=0 \
      -p readproportion=<读比例> \
      -p updateproportion=<写比例> \
      -p mongodb.url="mongodb://<user>:<password>@<endpoint>:<port>/<db>" \
      -threads <线程数>

测试命令中的参数说明如下表所示。

参数

说明

mongodb.url

文档数据库的连接地址。请将<username><password><endpoint><port>替换为实际的文档数据库账号和访问地址。

recordcount

加载阶段的总记录数。

operationcount

压测阶段的总操作数。

readproportion

读操作的比例。纯读场景设置为100,纯写场景设置为0,读写混合场景设置为50。

updateproportion

写操作的比例。纯写场景设置为100,纯读场景设置为0,读写混合场景设置为50。

threads

并发线程数,本次测试分别使用1632线程。