我在真实场景下对几款主流云原生数据库进行极限性能压测的一次总结!!!

最近几年,云数据库市场日趋繁荣,进入百花齐放、百家争鸣的时代,头部云计算厂商相继推出了自己的数据库产品,特别是亚马逊的Aurora、阿里云的PolarDB、华为云的GaussDB等等。

作为MySQL技术专家,我写过MySQL系列丛书《MySQL技术大全:开发, 优化与运维实战》, 有挺多准备上云企业的DBA或者架构师同学询问,如何对市场上五花八门的数据库进行选型, 我觉得首先是稳定性, 然后就是性能。今天,我就针对PolarDB、OceanBase、Aurora、GaussDB、TDSQL-C这五款数据库产品做个开箱性能评测供企业选型参考。

评测总览

为了方便读者更好的了解本次性能评测的整体结论,首先给出测试结果的总览图和相关结论:

在小规格实例(8C)的性能测试中,无论是在计算密集型场景还是在I/O密集型场景,各类测试负载下,PolarDB整体的测试性能是最好的.

对于大规格实例(64C),各数据库实例间的性能差距更为明显。值得一提的是,在测试负载下Aurora写性能明显较差。整体而言,PolarDB性能相比于Aurora、TDSQL-C、Oceanbase和GaussDB等同类竞品同样具有较为显著的优势。

图. 大规格实例(64C)性能测试结果

图.小规格实例(8C)性能测试结果

压测情况

本次参与压力测试的数据库包括了阿里云的PolarDB数据库, 亚马逊云的Aurora数据库,蚂蚁集团100%控股的数据库OceanBase数据库,华为云的GaussDB数据库,以及腾讯云的TDSQL-C数据库。参与评审的都是MySQL 兼容版。

压测环境

为了保证压测结果的公平性,五个数据库均部署在各自的数据库厂商所在的云服务器上,且每个数据库所在的服务器实例规格都一样,云服务器实例规格都是8C64GB和64C512GB、MySQL 8.0,一主一从。

但OceanBase数据库由于规格限制,实际上,采用的云服务器实例规格为62C400GB。

在实例规格一致(除OceanBase使用62C400GB规格)的前提下,我们在各自的云服务器上都是采用的开箱配置。

压测配置

我们会对五个数据库的压力测试采用计算密集型和I/O密集型两种配置方式,并且会采用在配置上严格一致的shell脚本来进行压测。

计算密集型配置方式

对于计算密集型配置方式来说,压测五个数据库时,最终的结果信息将按如下格式进行输出。

case
数据库名称;数据表的数量;数据表大小(每张表中数据的条数);

;最大线程数量;最小线程数量;
云服务器实例名称;对应线程数目的QPS;对应线程数目的QPS;

这里,对上述输出结果的格式进行简要说明:

  • case:表示压测数据库时采用的数据库读写模式,主要的取值分为:oltp_read_only(只读模式)、oltp_read_write(读写模式)、oltp_write_only(只写模式)。
  • 数据库名称:压测数据库时指定的数据库名称,例如我们在对数据库采用计算密集型的配置方式进行压测时,指定的数据库名称为tpk_s。
  • 数据表的数量:压测数据库时指定的数据库中数据表的数量,例如我们在对数据库采用计算密集型的配置方式进行压测时,每个数据库中指定的数据表数量为10。
  • 数据表大小:压测数据库时指定每张数据表中数据的大小,例如我们在对数据库采用计算密集型的配置方式进行压测时,每张数据表中的数据大小为10000000。
  • 线程数量:这个就比较好理解了,压测数据库时,指定采用多少个线程开始压测。例如我们对数据库采用计算密集型的配置方式进行压测时,在8C64GB规格下,最大线程数量为128,最小线程数量为1。在64C512GB规格下,最大线程数量为300,最小线程数量为1。
  • 云服务实例名称:数据库所在的云服务器实例名称,注意这里不是压测脚本所在的云服务器实例名称。
  • 对应线程数目的qps:按照格式分别输出的最大线程数目和最小线程数目对应的QPS。

I/O密集型配置方式

对于I/O密集型配置方式来说,压测五个数据库,最终的结果信息将按照如下格式进行输出。

case
数据库名称;数据表的数量;数据表大小(每张表中数据的条数);
;最大线程数量;最小线程数量;
云服务器实例名称;对应线程数目的QPS;对应线程数目的QPS;

可以看到,采用I/O密集型的配置方式进行压测与采用计算密集型的配置方式进行压测输出的结果格式是相同的。但进行实际压测时,二者的配置信息存在稍许差异。

  • 计算密集型方式的数据库名称为tpk_s,而I/O密集型的配置方式数据库名称为tpk_l。
  • 计算密集型方式的数据表大小为10000000,而I/O密集型的配置方式在8C64GB规格下,数据表大小为40000000。在64C512GB规格下,数据表大小为300000000。

以下是综合对比结果, 具体每一个产品PolarDB、OceanBase、Aurora、GaussDB和TDSQL-C 的测试在文章末尾, 感兴趣的小伙伴可以参考对比.

综合对比

8C64GB规格综合对比

为了更加直观的对比每款数据库在8C64GB规格下的性能,这里我将在8C64GB规格下的压测结果数据进行整合对比,如下所示。

计算密集型压测结果对比

(1)oltp_read_only模式压测对比

数据库

128线程QPS

1线程QPS

PolarDB

95863.56

5184.38

OceanBase

61068.59

1953.32

Aurora

69933.45

3183.13

GaussDB

85244.76

5638.32

TDSQL-C

94343.16

4091.835

(2)oltp_read_write模式压测对比

数据库

128线程QPS

1线程QPS

PolarDB

82701.53

4809.97

OceanBase

39874.51

1801.23

Aurora

42649.67

2465.01

GaussDB

58522.77

4896.80

TDSQL-C

61997.33

2661.6075

(3)oltp_write_only模式压测对比

数据库

128线程QPS

1线程QPS

PolarDB

96784.14

4617.05

OceanBase

31767.13

1648.32

Aurora

35598.10

1484.75

GaussDB

58697.92

2216.81

TDSQL-C

53867.95

1799.2725

从我对五款数据库进行计算密集型压测结果的综合对比可以看出,在oltp_read_only模式下、oltp_read_write模式下和oltp_write_only模式下,开启1或128个线程压测时,PolarDB性能最好。

I/O密集型压测结果对比

(1)oltp_read_only模式压测对比

数据库

128线程QPS

1线程QPS

PolarDB

67105.08

2943.15

OceanBase

33997.1

1684.21

Aurora

30695.90

1056.77

GaussDB

24423.91

1927.34

TDSQL-C

48069.14

2032.22

(2)oltp_read_write模式压测对比

数据库

128线程QPS

1线程QPS

PolarDB

61093.90

2891.23

OceanBase

29325.76

1582.34

Aurora

21751.73

683.03

GaussDB

23178.85

1703.34

TDSQL-C

38388.89

1667.94

(3)oltp_write_only模式压测对比

数据库

128线程QPS

1线程QPS

PolarDB

61438.08

2602.82

OceanBase

29876.21

1503.22

Aurora

23290.39

1001.32

GaussDB

41209.88

1638.43

TDSQL-C

40414.65

1559.45

从我对五款数据库进行I/O密集型压测结果的综合对比可以看出,无论是在oltp_read_only模式、oltp_read_write模式,还是在oltp_write_only模式下,PolarDB的性能都是最优的。

64C512GB规格综合对比

为了更加直观的对比每款数据库在64C512GB规格下的性能,这里我将在64C512GB规格下的压测结果数据进行整合对比,如下所示。

计算密集型压测结果对比

(1)oltp_read_only模式压测对比

数据库

300线程QPS

1线程QPS

PolarDB

583481.91

5299.95

OceanBase

210599.67

1979.00

Aurora

460661.52

3953.16

GaussDB

324943.02

5238.16

TDSQL-C

345769.06

4102.13

(2)oltp_read_write模式压测对比

数据库

300线程QPS

1线程QPS

PolarDB

459306.28

4998.68

OceanBase

161787.02

1725.00

Aurora

161193.67

2330.50

GaussDB

231511.89

3528.90

TDSQL-C

259070.85

2648.34

(3)oltp_write_only模式压测对比

数据库

300线程QPS

1线程QPS

PolarDB

415477.31

5025.55

OceanBase

102735.32

1636.21

Aurora

52484.71

1282.10

GaussDB

195454.50

2077.85

TDSQL-C

122732.32

1799.2725

从我对五款数据库进行计算密集型压测结果的综合对比可以看出,无论是在oltp_read_only模式,还是在oltp_read_write模式,亦或是在oltp_write_only模式下,PolarDB的性能都是最好的。

I/O密集型压测结果对比

(1)oltp_read_only模式压测对比

数据库

300线程QPS

1线程QPS

PolarDB

379448.39

3205.95

OceanBase

186231.85

1663.59

Aurora

162073.88

908.75

GaussDB

202102.54

2438.24

TDSQL-C

130938.23

2203.23

(2)oltp_read_write模式压测对比

数据库

300线程QPS

1线程QPS

PolarDB

323182.93

3147.55

OceanBase

142723.88

1592.08

Aurora

75080.03

807.78

GaussDB

164403.19

2243.14

TDSQL-C

112711.66

1782.34

(3)oltp_write_only模式压测对比

数据库

300线程QPS

1线程QPS

PolarDB

335549.53

3751.35

OceanBase

99543.00

1447.24

Aurora

26616.15

748.74

GaussDB

152426.14

2254.31

TDSQL-C

72023.23

1582.23

在大规格实例I/O密集型压测中,同样是PolarDB的测试性能最优,并且相对其他产品的优势比小规格实例更为明显。

以下是详细的PolarDB、OceanBase、Aurora、GaussDB和TDSQL-C 测试结果.

压测结果

在压测环境和压测配置都严格一致的情况下,我们开始对PolarDB、OceanBase、Aurora、GaussDB和TDSQL-C数据库分别进行压测。我对最终压测得出的结果数据进行了整理,下面分别按照8C64GB和64C512GB的规格给出测试结果。

8C64GB规格测试结果

PolarDB压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

10000000

128

1

95863.56

5184.38

oltp_read_write

10

10000000

128

1

82701.53

4809.97

oltp_write_only

10

10000000

128

1

96784.14

4617.05

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

40000000

128

1

67105.08

2943.15

oltp_read_write

10

40000000

128

1

61093.90

2891.23

oltp_write_only

10

40000000

128

1

61438.08

2602.82

OceanBase压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

10000000

128

1

61068.59

1953.32

oltp_read_write

10

10000000

128

1

39874.51

1801.23

oltp_write_only

10

10000000

128

1

31767.13

1648.32

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

40000000

128

1

33997.1

1684.21

oltp_read_write

10

40000000

128

1

29325.76

1582.34

oltp_write_only

10

40000000

128

1

29876.21

1503.22

Aurora压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

10000000

128

1

69933.45

3183.13

oltp_read_write

10

10000000

128

1

42649.67

2465.01

oltp_write_only

10

10000000

128

1

35598.10

1484.75

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

40000000

128

1

30695.90

1056.77

oltp_read_write

10

40000000

128

1

21751.73

683.03

oltp_write_only

10

40000000

128

1

23290.39

1001.32

GaussDB压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

10000000

128

1

85244.76

5638.32

oltp_read_write

10

10000000

128

1

58522.77

4896.80

oltp_write_only

10

10000000

128

1

58697.92

2216.81

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

40000000

128

1

24423.91

1927.34

oltp_read_write

10

40000000

128

1

23178.85

1703.34

oltp_write_only

10

40000000

128

1

41209.88

1638.43

TDSQL-C压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

10000000

128

1

94343.16

4091.835

oltp_read_write

10

10000000

128

1

61997.33

2661.6075

oltp_write_only

10

10000000

128

1

53867.95

1799.2725

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

128线程QPS

1线程QPS

oltp_read_only

10

40000000

128

1

48069.14

2032.22

oltp_read_write

10

40000000

128

1

38388.89

1667.94

oltp_write_only

10

40000000

128

1

40414.65

1559.45

64C512GB规格测试结果

PolarDB压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

10000000

300

1

583481.91

5299.95

oltp_read_write

10

10000000

300

1

459306.28

4998.68

oltp_write_only

10

10000000

300

1

415477.31

5025.55

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

300000000

300

1

379448.39

3205.95

oltp_read_write

10

300000000

300

1

323182.93

3147.55

oltp_write_only

10

300000000

300

1

335549.53

3751.35

OceanBase压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

10000000

300

1

210599.67

1979.00

oltp_read_write

10

10000000

300

1

161787.02

1725.00

oltp_write_only

10

10000000

300

1

102735.32

1636.21

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

300000000

30

1

186231.85

1663.59

oltp_read_write

10

300000000

30

1

142723.88

1592.08

oltp_write_only

10

300000000

30

1

99543.00

1447.24

Aurora压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

10000000

300

1

460661.52

3953.16

oltp_read_write

10

10000000

300

1

161193.67

2330.50

oltp_write_only

10

10000000

300

1

52484.71

1282.10

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

300000000

300

1

162073.88

908.75

oltp_read_write

10

300000000

300

1

75080.03

807.78

oltp_write_only

10

300000000

300

1

26616.15

748.74

GaussDB压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

10000000

300

1

324943.02

5238.16

oltp_read_write

10

10000000

300

1

231511.89

3528.90

oltp_write_only

10

10000000

300

1

195454.50

2077.85

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

300000000

300

1

202102.54

2438.24

oltp_read_write

10

300000000

300

1

164403.19

2243.14

oltp_write_only

10

300000000

300

1

152426.14

2254.31

TDSQL-C压测结果

(1)计算密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

10000000

300

1

345769.06

4102.13

oltp_read_write

10

10000000

300

1

259070.85

2648.34

oltp_write_only

10

10000000

300

1

122732.32

1799.2725

(2)I/O密集型压测结果

读写模式

表数目

表大小

最大线程数

最小线程数

300线程QPS

1线程QPS

oltp_read_only

10

300000000

300

1

130938.23

2203.23

oltp_read_write

10

300000000

300

1

112711.66

1782.34

oltp_write_only

10

300000000

300

1

72023.23

1582.23

最后,希望这次对于云原生数据库的压测结果能够为大家选型云原生数据库时提供一点点帮助。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/307315.html<

(0)
运维的头像运维
上一篇2025-05-27 01:51
下一篇 2025-05-27 01:52

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注