对比下 datax 的 OceanBase/MYSQL 不同数据同步方案的效率差异 || 聊聊参数 rewriteBatchedStatements

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 对比下 datax 的 OceanBase/MYSQL 不同数据同步方案的效率差异 || 聊聊参数 rewriteBatchedStatements

大家好,我是明哥!

1. 聊聊信创与 Oceanbase 数据库

熟悉金融行业的小伙伴们大都知道,银行券商基金公司保险公司等金融行业的中大型企业,都在积极响应国家号召,高举信创的大旗,从服务器/操作系统/数据库/中间件等软件生态的方方面面,探索国产化的各种可能方案。

其中在数据库层面,我司目前推出的方案主要有三个:

  • 对接蚂蚁的 Oceanbase;
  • 对接 PingCAP的 Tidb;
  • 对接我司的 LightDb;

以上三种方案,目前我司在不同券商都有一些落地方案。

2. 聊聊 datax 的 Oceanbase 数据同步方案

不管客户选用哪种信创数据库的方案,不可避免的一个话题都是数据集成/数据同步,目前我司使用最多的一个方案是基于阿里开源的数据集成方案 datax 二次开发而来的一个方案。

那么 datax 对接 OceanBase 时,都有哪些同步方案可选呢?

  • 一是 datax 的 rdbmsreader/rdbmswriter: 因为 Oceanbase 提供了 JDBC 驱动,所以当然可以使用 datax 的支持所有关系型数据库的通用RDBMS插件来同步数据;
  • 二是 datax 推出的 OceanBase 专用插件 oceanbasev10writer/oceanbasev10reader:了解社区发展动向的小伙伴们,会留意到,datax 在2021年5月推出了开源的OceanBase 专用插件 oceanbasev10writer/oceanbasev10reader,如下图所示:

640.png

3. 对比下方案 rdbmsreader/rdbmswriter 和 方案 oceanbasev10writer/oceanbasev10reader 的同步效率

一般来讲,专用的插件会比通用的插件性能要高,我们基于我们的场景,对120W左右的数据的插入速度进行了测试,从结果来看,使用oceanbase 定制的 oceanbasev10writer 插件之后,插入性能比通用插件 rdbmswriter 提升了12倍左右:

640.png

说明:

  • 我们这里没有对读取插件进行详细的性能测试对比,但有理由相信,其性能应该也是有不少提升的;
  • 当然大家的场景不一样,数据库表的结构有差异(有无索引,表字段多少,字段类型等有差异),测试结果可能不尽相同,但结论应该是类似的:定制插件比通用插件性能要高!

4. 深入剖析下 oceanbasev10writer/oceanbasev10reader 插件

  • 开源的魅力就在于,你是可以看到源码的!只要你想,通过查看源码,即可分析其方案原理和细节差异;
  • 通过查看 datax 的源码,笔者发现,以下两个类的如下三个方法中,显示地对 oceanbasev10writer/oceanbasev10reader 的 jdbc url 添加了链接参数 rewriteBatchedStatements=true:
  • com.alibaba.datax.plugin.writer.oceanbasev10writer.ext.OBDataSourceV10#buildJdbcProperty
  • com.alibaba.datax.plugin.rdbms.util.DataBaseType#appendJDBCSuffixForWriter
  • com.alibaba.datax.plugin.rdbms.util.DataBaseType#appendJDBCSuffixForReader

640.png

640.png

640.png

看到这里,熟悉 Mysql 的 JDBC 连接参数 rewriteBatchedStatements 的小伙伴们,大概就猜到了:datax 的 OceanBase 专用插件 oceanbasev10writer/oceanbasev10reader,由于底层使用了 jdbc 的 batched Update 功能,所以性能比没有使用 jdbc batched update 功能时,速度有了数十倍的提升!

答案确实如此!

事实上,出于好奇,我们切换使用了 datax 的 RDBMS 通用插件 rdbmsreader/rdbmswriter,但在 jdbc url 中显示添加了参数 rewriteBatchedStatements=true,经测试,其数据写入速度跟上述专用插件的写入速度并无明显差异!

通过查看源码,我们还发现,datax 对mysql的写入操作做了类似处理,所以概括下:

  • 使用datax 读写各种关系型数据库 rdbms 时,推荐使用其专用读写插件,此时不用做特殊配置好,即能做到最优的读写性能;
  • 当使用 datax 写入到 mysql 和 oceanbase 时,如果使用其 专用写插件(MysqlWriter和oceanbasev10writer),此时底层使用到了特性 jdbc batched update, 所以性能比较好!
  • 当使用 datax 写入到 mysql 和 oceanbase 时,如果使用 datax 的 rdbms通用插件(RdbmsWriter),此时需要显示在 jdbc url 中指定参数 rewriteBatchedStatements=true, 才能使用到特性 jdbc batched update,才能做到较好的性能!
  • 640.png
相关文章
|
12天前
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
32 9
|
2月前
|
监控 关系型数据库 MySQL
Aurora MySQL负载突增应对策略与优化方案
通过以上策略,企业可以有效应对 Aurora MySQL 的负载突增,确保数据库在高负载情况下依然保持高性能和稳定性。这些优化方案涵盖了从架构设计到具体配置和监控的各个方面,能够全面提升数据库的响应速度和处理能力。在实际应用中,应根据具体的业务需求和负载特征,灵活调整和应用这些优化策略。
58 22
|
2月前
|
Java 关系型数据库 MySQL
MySQL 分库分表方案
本文总结了数据库分库分表的相关概念和实践,针对单张表数据量过大及增长迅速的问题,介绍了垂直和水平切分的方式及其适用场景。文章分析了分库分表后可能面临的事务支持、多库结果集合并、跨库join等问题,并列举了几种常见的开源分库分表中间件。最后强调了不建议水平分库分表的原因,帮助读者在规划时规避潜在问题。
251 20
|
3月前
|
存储 缓存 关系型数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
|
3月前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
4月前
|
存储 关系型数据库 MySQL
MySQL 字段类型深度解析:VARCHAR(50) 与 VARCHAR(500) 的差异
在MySQL数据库中,`VARCHAR`类型是一种非常灵活的字符串存储类型,它允许存储可变长度的字符串。然而,`VARCHAR(50)`和`VARCHAR(500)`之间的差异不仅仅是长度的不同,它们在存储效率、性能和使用场景上也有所不同。本文将深入探讨这两种字段类型的区别及其对数据库设计的影响。
170 2
|
4月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
426 3
Mysql高可用架构方案
|
4月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
120 5
|
4月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
89 1
|
5月前
|
SQL 关系型数据库 MySQL
mysql集群方案
mysql集群方案
72 0