PolarDB-X 全局 Binlog 解读之性能篇(上)

本篇来介绍一下PolarDB-X全局binlog在性能方面的一些设计和思考,先通过几个实际的测试案例来展示全局binlog的性能情况,然后结合这些案例来深入讲解全局binlog关于优化的故事。

测试准备

准备一个PolarDB-X 2.0实例,本文测试所用实例版本为5.4.14-16576195,实例配置如下:

  • 实例拓扑:8CN + 8DN + 2CDC
  • 单CN节点规格:32核128GB
  • 单DN节点规格:32核128GB
  • 单CDC节点规格:16核32GB

准备两台ECS压测机,机器配置:64核128G

名词解释

  • EPS

Event Per Second,每秒写入binlog文件的event个数

  • DML EPS

DML Event Per Second,每秒写入binlog文件的dml event个数,所谓dml event特指binlog中的TableMapEvent、WriteRowsEvent、UpdateRowsEvent和DeleteRowsEvent

  • BPS

Byte Per Second,每秒写入binlog文件的字节数,后文为表达方便,采用M/s来作为计量单位

  • TPS

Transaction Per Second,每秒钟写入binlog文件的事务个数

  • FPM

File Per Minute,每分钟生成binlog文件的个数,单个文件大小500M

  • Delay Time

延迟时间,单位ms

测试方案

TPCC

测试方法参见:https://help.aliyun.com/document_detail/405018.html
本测试案例,TPCC核心参数的配置如下:

  • warehouses=2000
  • loadWorkers=500
  • terminals=1024
  • runLoader.sh 中JVM参数配置 -Xms60g -Xmx60g
  • runBenchmark.sh 中JVM参数配置 -Xms60g -Xmx60g

场景一:TPCC数据导入

  • 测试目的

在进行压测数据导入时,DN节点会瞬时产生大量物理binlog,借此观察全局binlog的性能指标情况

  • 测试方式

在每台ECS上面分别部署多份tpcc程序包,同时运行多个./runDatabaseBuild.sh,来构造流量

场景二:TPCC交易测试

  • 测试目的

执行TPCC测试,模拟真实交易场景,考察全局binlog的性能情况(重点关注延迟)

  • 测试方式

调整压测并发度,构造不同的tmpC参考指标,观察全局binlog延迟指标。由于8CN+8DN在压力打满的情况下,全局binlog的延迟依然比较低,所以下面的测试,不局限于8CN+8DN

Sysbench

测试方法参见: https://help.aliyun.com/document_detail/405017.html

场景一:Sysbench数据导入

  • 测试目的

在进行压测数据导入时,DN节点会瞬时产生大量物理binlog,借此观察全局binlog的性能指标情况

  • 测试方式

调整--tables和--threads的参数值,测试不同压力状态下全局binlog的性能指标

场景二:Sysbench oltp_write_only

  • 测试目的

执行sysbench oltp_write_only,测试混合写入场景下,全局binlog性能情况

  • 测试方式

执行oltp_write_only,构造不同qps参考指标,观察全局binlog延迟情况

Large Transaction

  • 测试目的

测试超大事务场景下,CDC的性能情况和稳定性,重点关注延迟时间

  • 测试方式

参考如下脚本,构造不同大小的事务,进行测试,按如下脚本,每插入20w条数据可以构造一个500M大小的事务

CREATE TABLE `t_1`
(`id` bigint(20) NOT NULL AUTO_INCREMENT,
`c_bit_1` bit(1) DEFAULT NULL,
`c_bit_8` bit(8) DEFAULT NULL,
`c_bit_16` bit(16) DEFAULT NULL,
`c_bit_32` bit(32) DEFAULT NULL,
`c_bit_64` bit(64) DEFAULT NULL,
`c_tinyint_1` tinyint(1) DEFAULT NULL,
`c_tinyint_4` tinyint(4) DEFAULT NULL,
`c_tinyint_8` tinyint(8) DEFAULT NULL,
`c_tinyint_8_un` tinyint(8) unsigned DEFAULT NULL,
`c_smallint_1` smallint(1) DEFAULT NULL,
`c_smallint_16` smallint(16) DEFAULT NULL,
`c_smallint_16_un` smallint(16) unsigned DEFAULT NULL,
`c_mediumint_1` mediumint(1) DEFAULT NULL,
`c_mediumint_24` mediumint(24) DEFAULT NULL,
`c_mediumint_24_un` mediumint(24) unsigned DEFAULT NULL,
`c_int_1` int(1) DEFAULT NULL,
`c_int_32` int(32) DEFAULT NULL,
`c_int_32_un` int(32) unsigned DEFAULT NULL,
`c_bigint_1` bigint(1) DEFAULT NULL,
`c_bigint_64` bigint(64) DEFAULT NULL,
`c_bigint_64_un` bigint(64) unsigned DEFAULT NULL,
`c_decimal` decimal DEFAULT NULL,
`c_decimal_pr` decimal(10,3) DEFAULT NULL,
`c_float` float DEFAULT NULL,
`c_float_pr` float(10,3) DEFAULT NULL,
`c_float_un` float(10,3) unsigned DEFAULT NULL,
`c_double` double DEFAULT NULL,
`c_double_pr` double(10,3) DEFAULT NULL,
`c_double_un` double(10,3) unsigned DEFAULT NULL,
`c_date` date DEFAULT NULL COMMENT 'date',
`c_datetime` datetime DEFAULT NULL,
`c_timestamp` timestamp DEFAULT CURRENT_TIMESTAMP,
`c_time` time DEFAULT NULL,
`c_year` year DEFAULT NULL,
`c_year_4` year(4) DEFAULT NULL,
`c_char` char(50) DEFAULT NULL,
`c_varchar` varchar(50) DEFAULT NULL,
`c_binary` binary(200) DEFAULT NULL,
`c_varbinary` varbinary(200) DEFAULT NULL,
`c_blob_tiny` tinyblob DEFAULT NULL,
`c_blob` blob DEFAULT NULL,
`c_blob_medium` mediumblob DEFAULT NULL,
`c_blob_long` longblob DEFAULT NULL,
`c_text_tiny` tinytext DEFAULT NULL,
`c_text` text DEFAULT NULL,
`c_text_medium` mediumtext DEFAULT NULL,
`c_text_long` longtext DEFAULT NULL,
`c_enum` enum('a','b','c') DEFAULT NULL,
`c_set` set('a','b','c') DEFAULT NULL,
`c_testcase` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`) )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='10000000' dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 8;
INSERT t_1 (c_bit_1 , c_bit_8 , c_bit_16 , c_bit_32 , c_bit_64 , c_tinyint_1 , c_tinyint_4 , c_tinyint_8 , c_tinyint_8_un , c_sma
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值