文档

Sysbench测试(标准版)

更新时间:

本文详细介绍了PolarDB-X 标准版的Sysbench测试设计、测试过程和测试结果。

背景信息

PolarDB-X标准版采用了一主一备一日志的三节点架构,通过多副本同步复制确保数据的强一致性。面向具备超高并发、复杂查询及轻量分析的在线业务场景的数据库,本文将验证PolarDB-X标准版的通用规格,引擎版本分别为MySQL 5.7和MySQL 8.0的实例在Sysbench读写场景中的性能表现,分别测试内存命中型和磁盘I/O型。

  • 内存命中型:适用于数据量较小的场景,可将数据全量放入Buffer Pool进行存取。

  • 磁盘I/O型:适用于数据量大的场景,只将最常访问的数据放入Buffer Pool进行存取。

测试设计

本次压测采用业界标准的SysBench,分别对PolarDB-X标准版的通用规格,引擎版本为MySQL 5.7和MySQL 8.0的实例进行测试,实例具体规格如下:

  • 引擎版本:MySQL 5.7、MySQL 8.0

  • 部署拓扑:单可用区

  • 系列:标准版

  • 规格系列:通用规格

  • 节点规格:2C4G、2C8G、4C8G、4C16G、8C16G、8C32G、16C32G、16C64G

  • 存储类型:本地SSD盘

测试工具

  1. 下载Sysbench压测工具包sysbench.tar.gz,并解压。

    tar xzvf sysbench.tar.gz
    cd sysbench/
  2. 安装编译所需依赖库。

    yum -y install make automake libtool pkgconfig libaio-devel mysql-devel
    ./autogen.sh
    ./configure
    make -j
    make install
  3. 执行sysbench --version,如果返回sysbench 1.1.0表示测试工具安装成功。

也可以通过GitHub下载开源版本的Sysbench,请参见下载链接

测试场景说明

  • 数据量:不同规格采用不同数据量压测。

  • 压测场景:使用Sysbench oltp_read_write场景压测。

  • 压测时长:每个场景300秒。

  • 实例参数设置:全部采用开箱参数,不手动设置任何参数。

测试过程

  1. 准备数据:

    sysbench --mysql-host='xxxx' --histogram='on' --mysql-user='xxx' --percentile='95' --threads='xxx' --db-ps-mode='disable' --report-interval='1' --mysql-password='xxx' --tables='xxx' --table-size='xxx' --db-driver='mysql' --time='300' --rand-type='uniform' --mysql-port='3306' --events='0' --mysql-db=xxx oltp_read_write prepare 
  2. 运行压测:

    sysbench --mysql-host='xxxx' --histogram='on' --mysql-user='xxx' --percentile='95' --threads='xxx' --db-ps-mode='disable' --report-interval='1' --mysql-password='xxx' --tables='xxx' --table-size='xxx' --db-driver='mysql' --time='300' --rand-type='uniform' --mysql-port='3306' --events='0' --mysql-db=xxx oltp_read_write run
  3. 清理数据 :

    sysbench --mysql-host='xxxx' --histogram='on' --mysql-user='xxx' --percentile='95' --threads='xxx' --db-ps-mode='disable' --report-interval='1' --mysql-password='xxx' --tables='xxx' --table-size='xxx' --db-driver='mysql' --time='300' --rand-type='uniform' --mysql-port='3306' --events='0' --mysql-db=xxx oltp_read_write cleanup
    • table_size:每张表数据量,不同规格压测数据量不同;

    • tables:表数量不同规格压测表数量不同;

    • threads:压测并发数,不同规格,并发数不同;

    • time:压测时长,本文一般采用300秒;

    • mysql-host、mysql-user、mysql-password是实例的链接信息。

测试结果

说明

版本号:polardb-2.4.0_standard_xcluster5.4.19-20240527,详情请参见:版本发布说明

MySQL 5.7内存命中型

image

image

规格

并发度

单表数据量

表总数

TPS

QPS

avg_lat(ms)

2c4g

16

25000

32

2281.96

45639.24

7.01

2c8g

16

25000

32

2410.54

48210.76

6.64

4c8g

32

25000

128

4259.37

85187.43

7.51

4c16g

32

25000

128

4408.82

88176.48

7.26

8c16g

64

25000

128

5929.75

118595.07

10.79

8c32g

64

25000

128

6082.82

121656.47

10.52

16c32g

128

25000

128

7310.47

146209.3

17.5

16c64g

128

25000

128

7967.22

159344.27

16.07

MySQL 5.7磁盘I/O型

image

image

规格

并发度

单表数据量

表总数

TPS

QPS

avg_lat(ms)

2c4g

16

800000

8

1845.34

36906.73

8.67

2c8g

16

800000

16

2197.84

44220.51

7.28

4c8g

32

800000

16

3692.17

73843.32

8.67

4c16g

32

800000

56

4172.07

83441.36

7.67

8c16g

64

800000

56

5883.02

117660.48

10.88

8c32g

64

800000

128

5546.38

110927.67

14.39

16c32g

128

800000

128

6868.36

137367.31

18.64

16c64g

128

800000

256

7751.82

155036.27

16.51

MySQL 8.0内存命中型

image

image

规格

并发度

单表数据量

表总数

TPS

QPS

avg_lat(ms)

2c4g

16

25000

32

1875.3

37506.02

8.53

2c8g

16

25000

32

1595.98

31919.55

10.02

4c8g

32

25000

128

3677.3

73546.05

8.7

4c16g

32

25000

128

3623.58

72471.53

8.83

8c16g

64

25000

128

4719.63

94392.54

13.56

8c32g

64

25000

128

4848.15

96962.91

13.2

16c32g

128

25000

128

8180.18

163603.55

15.65

16c64g

128

25000

128

7372.02

147440.43

17.36

MySQL 8.0磁盘I/O型

imageimage

规格

并发度

单表数据量

表总数

TPS

QPS

avg_lat(ms)

2c4g

16

800000

8

1815.87

36317.41

8.81

2c8g

16

800000

16

1165.9

23317.94

13.72

4c8g

32

800000

16

2878.76

57575.13

11.11

4c16g

32

800000

56

3150.34

63006.87

10.16

8c16g

64

800000

56

4590.04

91800.79

13.94

8c32g

64

800000

128

4135.85

82717.05

15.47

16c32g

128

800000

128

7075.06

141501.37

18.09

16c64g

128

800000

256

6148.95

122978.96

20.81