You need to enable JavaScript to run this app.
文档中心
文档数据库 MongoDB 版

文档数据库 MongoDB 版

复制全文
下载 pdf
文档数据库 MongoDB 版
性能白皮书
复制全文
下载 pdf
性能白皮书
本文介绍以 YCSB 压测工具测试文档数据库 MongoDB 版实例性能的详细方法和测试结果,您可以按照本文介绍自行测试对比,快速了解数据库系统的性能。​
测试环境​
  • 测试所用的 ECS 实例和文档数据库 MongoDB 版实例均在同一地域、同一可用区。本测试中为华南 1(广州)可用区 A。​
  • 网络类型均为私有网络 VPC,且 ECS 实例和 MongoDB 实例均在同一个 VPC 中。​
  • 测试所用文档数据库 MongoDB 版实例:​
  • 实例配置:副本集实例,测试规格为 2 核 4 GiB、4 核 8 GiB、8 核 16 GiB、16 核 32 GiB 和 16 核 64 GiB。​
  • 存储类型:SSD 本地盘(物理机架构)和 ESSD FlexPL 云盘(云盘架构),存储空间均为 500 GiB。​
  • 数据库版本:MongoDB 4.4。​
  • 测试所用 ECS 实例:​
  • 实例配置:规格为 8 核 16 GiB 的 ECS 实例(规格码 ecs.c6e.2xlarge)。​
  • 存储类型:ESSD PL0 云盘,存储空间为 40 GiB。​
  • 操作系统版本:Debian 10。​
测试工具​
本测试中使用的工具为 YCSB 0.17.0。YCSB 是一款由 Java 语言实现的支持多种数据库的性能测试工具,具体安装和使用方法请参见 YCSB。​
测试场景​
本次测试涵盖 Load(数据加载)及五种读写比场景,各场景对应的读写比例如下。​
​
场景​
读写比​
readproportion​
updateproportion​
Load​
-​
-​
-​
纯读​
100:0​
100​
0​
读多写少​
95:5​
95​
5​
读写均衡​
50:50​
50​
50​
写多读少​
5:95​
5​
95​
纯写​
0:100​
0​
100​
​
说明​
Load 场景为数据加载阶段,用于评估大批量写入能力,不涉及读写比例。​
本次测试 MongoDB 不同实例规格对应的 threads、recordcount 和 operationcount 取值如下。​
​
实例规格​
threads​
recordcount 和 operationcount​
2 核 4 GiB​
8​
2000000​
4 核 8 GiB​
16​
4000000​
8 核 16 GiB​
32​
8000000​
16 核 32 GiB​
64​
16000000​
16 核 64 GiB​
96​
32000000​
​
各规格的 CPU 核数与内存配置,请参见产品规格。​
测试方法​
  1. 在目标 MongoDB 实例中,将 ECS 实例的主私网 IP 加入白名单。具体添加方法,请参见编辑白名单;主私网 IP 的获取方式,请参见查看 IPv4/IPv6 地址。​
  1. 远程登录 ECS 实例。具体操作步骤,请参见登录实例。​
  1. 向 MongoDB 实例加载测试数据。​
  • ​
    ./bin/ycsb load mongodb -s -threads <num> -p workload=site.ycsb.workloads.CoreWorkload -p mongodb.batchsize=1 -p mongodb.url='<url>' -p recordcount=<num> ​
    ​
  • 您需要替换以下参数:​
  • threads:客户端并发线程数,用于模拟不同并发压力。请根据测试场景,将该参数替换为实际值。​
  • mongodb.url:MongoDB 实例的连接地址,需使用英文单引号括起来。格式:mongodb://<user>:<password>@<host:port>/ycsb?replicaSet=<replicaSetName>&w=1。连接地址的获取方式,请参见查看连接地址。​
  • recordcount:加载至 MongoDB 实例的记录总数。请根据测试场景,将该参数替换为实际值。​
  1. 执行性能压测命令。​
说明​
  • 开启 operationProfiling.mode 参数可能会影响实例性能,建议进行性能压测前先将参数值设置为 off。参数设置方法,请参见修改实例参数。​
  • 为保证各读写比场景使用统一命令模板,本测试命令中保留 -p mongodb.upsert=true。该参数仅在 update 操作中生效,用于将不存在的文档改写为插入;在纯读(readproportion=100)场景下不会被触发,不影响读性能测试结果。​
  • ​
    ./bin/ycsb run mongodb -s -threads <num> -p workload=site.ycsb.workloads.CoreWorkload -p mongodb.upsert=true -p mongodb.batchsize=1 -p mongodb.url='<url>' -p recordcount=<num> -p operationcount=<num> -p requestdistribution=zipfian -p readproportion=<num> -p updateproportion=<num>​
    ​
  • 您需要替换以下参数:​
  • mongodb.url:MongoDB 实例的连接地址,需使用英文单引号括起来。格式:mongodb://<user>:<password>@<host:port>/ycsb?replicaSet=<replicaSetName>&w=1。连接地址的获取方式,请参见查看连接地址。​
  • recordcount:加载至 MongoDB 实例的记录总数。请根据测试场景,将该参数替换为实际值。​
  • operationcount:执行读写测试的总操作次数,通常与 recordcount 取值一致。请根据测试场景,将该参数替换为实际值。​
  • readproportion:读操作占比,取值范围 0~100。请根据测试场景,将该参数替换为实际值。​
  • updateproportion:写操作占比,取值范围 0~100。请根据测试场景,将该参数替换为实际值。​
测试结果​
衡量指标说明​
​
衡量指标​
单位​
说明​
Throughput​
ops/s​
客户端测试吞吐数(即读写操作数)。​
RAL​
μs​
读操作平均延迟。​
WAL​
μs​
写操作平均延迟。​
​
测试结果详情​
基于上述测试场景与配置,我们分别对物理机架构和云盘架构实例进行了测试,结果如下。​
​
物理机架构实例
云盘架构实例
​
Load​
​
实例规格​
Throughput (ops/s)​
RAL (μs)​
WAL (μs)​
2 核 4 GiB​
8465​
-​
940​
4 核 8 GiB​
16737​
-​
951​
8 核 16 GiB​
28690​
-​
1110​
16 核 32 GiB​
44069​
-​
1447​
16 核 64 GiB​
33403​
-​
2869​
​
100:0​
​
实例规格​
Throughput (ops/s)​
RAL (μs)​
WAL (μs)​
2 核 4 GiB​
18488​
429​
-​
4 核 8 GiB​
35370​
448​
-​
8 核 16 GiB​
61968​
638​
-​
16 核 32 GiB​
92147​
688​
-​
16 核 64 GiB​
71877​
1329​
-​
​
95:5​
​
实例规格​
Throughput (ops/s)​
RAL (μs)​
WAL (μs)​
2 核 4 GiB​
13128​
586​
990​
4 核 8 GiB​
26439​
581​
992​
8 核 16 GiB​
48214​
807​
1083​
16 核 32 GiB​
72593​
852​
1311​
16 核 64 GiB​
57930​
1600​
2661​
​
50:50​
​
实例规格​
Throughput (ops/s)​
RAL (μs)​
WAL (μs)​
2 核 4 GiB​
7629​
780​
1308​
4 核 8 GiB​
15751​
748​
1274​
8 核 16 GiB​
28706​
844​
1413​
16 核 32 GiB​
47265​
943​
1752​
16 核 64 GiB​
38708​
1544​
3403​
​
5:95​
​
实例规格​
Throughput (ops/s)​
RAL (μs)​
WAL (μs)​
2 核 4 GiB​
5393​
942​
1507​
4 核 8 GiB​
11415​
875​
1424​
8 核 16 GiB​
21139​
844​
1542​
16 核 32 GiB​
31959​
923​
2051​
16 核 64 GiB​
23262​
1540​
4255​
​
0:100​
​
实例规格​
Throughput (ops/s)​
RAL (μs)​
WAL (μs)​
2 核 4 GiB​
5265​
-​
1515​
4 核 8 GiB​
11415​
-​
1451​
8 核 16 GiB​
20426​
-​
1560​
16 核 32 GiB​
30776​
-​
2072​
16 核 64 GiB​
18120​
-​
5290​
​
​
​
测试结果分析​
  • 读密集场景(100:0、95:5)​
  • 云盘各规格吞吐均高于本地盘,且读占比越高,差距越明显。​
  • 写密集场景(5:95、0:100)​
  • 两者差距缩小,云盘整体略优,中低规格下优势相对明显。​
  • 读写均衡场景(50:50)​
  • 多数规格下云盘表现更优,个别规格与本地盘基本持平。​
  • Load 数据加载场景​
  • 本地盘性能优于云盘,在高规格下差距更为明显。​
说明​
  • 在 16 核 32 GiB 规格下,本地盘在写密集和读写均衡场景中反超云盘,因该规格的 I/O 能力可充分发挥本地盘直连优势。选用该规格时,建议结合实际业务模型评估。​
  • 整体来看,面向读密集或读写均衡型业务,云盘具备更稳定的性能表现;面向写密集业务,尤其是高规格实例,本地盘在特定场景中更具优势。​
最近更新时间:2026.10.08 15:13:42
这个页面对您有帮助吗?
有用
有用
无用
无用