在不同的云厂商,购买相同规格的 PostgreSQL 实例,获得的性能相同吗?本文使用 HammerDB,对不同云厂商的同样规格“4vCPU-16GB”进行性能测试来尝试回答上述问题。
HammerDB NOPM 详细数据
| data | aliyun | aws | azure | baidu | huawei | tencent | |
|---|---|---|---|---|---|---|---|
| 4 | 111595 | 45142 | 32721 | 63127 | 52766 | 48948 | 71942 |
| 8 | 119127 | 66258 | 57608 | 114384 | 67060 | 107971 | 131820 |
| 16 | 114861 | 74701 | 65859 | 173518 | 69745 | 137311 | 205286 |
| 32 | 121721 | 93421 | 77778 | 202612 | 50951 | 168526 | 239611 |
| 48 | 167499 | 86206 | 58136 | 212537 | 53195 | 160690 | 245468 |
| 64 | 219941 | 78844 | 65658 | 211387 | 58771 | 171571 | 253374 |
| 96 | 272737 | 72988 | 68001 | 214521 | 73041 | 145009 | 255348 |
| 128 | 295949 | 73394 | 65344 | 221967 | 80804 | 165685 | 256283 |
| 192 | 187361 | 71731 | 51834 | 175506 | 88645 | 157009 | 249002 |
| 256 | 232846 | 57158 | 46385 | 173140 | 96277 | 151988 | 243367 |
| 384 | 182860 | 61129 | 46103 | 166586 | 101374 | 148380 | 219641 |
| 512 | 211111 | 48812 | 51438 | 162274 | 97850 | 123454 | 202334 |
Latency (Event) 详细数据
如下表格分别为:创建订单的平均延迟 和 95%延迟数据,单位为毫秒/ms。
| data | aliyun | aws | azure | baidu | huawei | tencent | |
|---|---|---|---|---|---|---|---|
| 4 | 3.19 | 6.05 | 9.54 | 4.29 | 6.08 | 6.16 | 3.80 |
| 8 | 6.09 | 7.95 | 10.53 | 4.51 | 7.97 | 5.09 | 4.23 |
| 16 | 11.38 | 13.09 | 15.95 | 5.77 | 15.14 | 8.56 | 5.39 |
| 32 | 18.98 | 20.60 | 25.55 | 9.77 | 37.82 | 12.46 | 8.80 |
| 48 | 21.95 | 35.12 | 48.41 | 13.93 | 54.92 | 19.36 | 12.62 |
| 64 | 19.41 | 50.48 | 63.06 | 18.43 | 68.49 | 23.96 | 16.25 |
| 96 | 25.59 | 75.96 | 86.31 | 27.12 | 84.84 | 37.88 | 23.57 |
| 128 | 34.84 | 103.47 | 110.78 | 33.48 | 109.53 | 46.83 | 32.78 |
| 192 | 74.04 | 172.39 | 213.28 | 61.81 | 158.71 | 77.42 | 53.39 |
| 256 | 82.84 | 259.21 | 354.64 | 81.40 | 207.35 | 109.57 | 74.94 |
| 384 | 118.81 | 442.18 | 552.18 | 129.39 | 309.36 | 189.03 | 127.98 |
| 512 | 138.27 | 715.55 | 670.41 | NA | NA | 268.33 | 166.06 |
| data | aliyun | aws | azure | baidu | huawei | tencent | |
|---|---|---|---|---|---|---|---|
| 4 | 12.98 | 7.34 | 17.86 | 5.30 | 11.90 | 9.70 | 4.63 |
| 8 | 32.59 | 8.16 | 23.25 | 6.42 | 15.21 | 8.64 | 9.02 |
| 16 | 57.49 | 12.61 | 36.96 | 9.62 | 24.18 | 17.62 | 11.29 |
| 32 | 79.11 | 35.39 | 60.93 | 17.85 | 180.64 | 25.09 | 19.43 |
| 48 | 81.58 | 73.03 | 108.89 | 26.58 | 219.19 | 39.58 | 28.93 |
| 64 | 69.04 | 96.63 | 143.82 | 38.81 | 235.47 | 48.72 | 39.73 |
| 96 | 80.18 | 214.22 | 189.59 | 60.60 | 255.97 | 86.25 | 56.84 |
| 128 | 101.78 | 455.31 | 255.32 | 80.27 | 299.24 | 102.16 | 89.65 |
| 192 | 199.72 | 870.53 | 550.73 | 171.94 | 401.29 | 195.37 | 143.30 |
| 256 | 251.30 | 1052.08 | 978.31 | 237.99 | 563.66 | 274.02 | 176.93 |
| 384 | 371.82 | 1899.69 | 1706.44 | 424.60 | 842.40 | 469.09 | 391.07 |
| 512 | 452.25 | 3219.20 | 2133.27 | NA | NA | 730.46 | 522.09 |
参数表
| data | aliyun | aws | azure | baidu | huawei | tencent | |
|---|---|---|---|---|---|---|---|
| autovacuum | on | on | on | on | on | on | on |
| block_size | 8192 | 8192 | 8192 | 8192 | 8192 | 8192 | 8192 |
| effective_cache_size | 1048576 | 992280 | 1572864 | 1179648 | 819142 | 1572864 | 524288 |
| cache_size_in_GB | 8 GB | 7.57 GB | 12 GB | 9 GB | 6.25 GB | 12 GB | 4 GB |
| fsync | on | on | on | on | on | on | on |
| max_connections | 1620 | 1705 | 1718 | 1600 | 500 | 768 | 2048 |
| max_worker_processes | 8 | 8 | 8 | 8 | 8 | 8 | 8 |
| shared_buffers | 489705 | 496140 | 524288 | 589824 | 682496 | 524288 | 524288 |
| shared_buffers_in_GB | 3.74 GB | 3.79 GB | 4 GB | 4.5 GB | 5.21 GB | 4 GB | 4 GB |
| synchronous_commit | off | on | on | on | on | on | on |
| synchronous_standby_names | ANY 1 ( “azure_… | ANY 1 (dbnode1) | athena_23671246… | ||||
| wal_buffers | 8192 | 8192 | 2048 | 2048 | 2048 | 2048 | 2048 |
| wal_writer_delay | 200 | 200 | 200 | 200 | 200 | 200 | 200 |
| instance_type | pg.x4.large.2c | db.m7i.xlarge | GP_Standard_D4ds_v5 | 4 | db-custom-4-16384 | rds.pg.x1.xlarge.4.ha | 4c |
| storage_type | cloud_essd | io1 | NA | cloud_enha | NA | CLOUDSSD | NA |
| storage_size | 100 | 100 | 128 | 100 | 100 | 100 | 100 |
| storage_iops | NA | 3000 | P20 | NA | NA | NA | NA |
历史测试数据
测试方法与重现
这里使用开源的 HammerDB 进行测试,可以参考如下说明进行测试重现。
主要的测试参数
这里使用的 tpcc-like 的场景进行测试。测试数据大小则由 warehouses 数量决定,单个大小约为95 MB。这里使用的 warehouses 数量为 80 个。所以,数据量大约为 7.4 GB。测试的并发用户数,则如上所示,从最小 4 线程到最多的512个线程。其他参数包括:
- rampup 为 2;# 预热时间为2分钟
- duration 为5;# 一次并发测试为5分钟

数据库实例选择
数据库的规格参数,可以参考上述“参数表”:
- 规格代码,参考“参数表”中的“instance_type”行,该规格代码通常代表了该示例的CPU和Memory资源
- 各个云厂商的磁盘差异很大,这里小结如下:
| aws | aliyun | tencent | baidu | oci | azure | huawei | ||
| iops | 3000 | 6800 | NA | NA | 75000 | NA | 2,300 | 3000 |
| type | io1 | PL_1 | 本地SSD | 增强型SSD | OCI_OPTIMIZED_STORAGE | NA | P20 | CLOUDSSD |
| size | 100 | 100 | 100 | 100 | 100 | 100 | 128 | 100 |
| ref | NA | 参考 | 参考 | 参考 | 参考 | 参考 | 参考 |
补充说明:
- 阿里云计算公式:1800+50*100 min{1800+50存储空间, 50000, 实例规格最大IOPS}
- 华为云计算公司: IOPS=min (20000, 1800 + 12 × 容量(GiB)
- 腾讯云仅本地 SSD IOPS 并无相关说明
关于 HammerDB
HammerDB 是目前 PostgreSQL 领域使用较多的测试工具,该测试工具致力于基于 TPC 标准构建开源的、便于执行的多种数据库测试。主要的云厂商也通常会发布 HammerDB 的性能数据作为托管 PostgreSQL 的基准性能,例如:
Leave a Reply