突破 MySQL 三大技术瓶颈,分布式数据库的技术实践

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 数据库选型时的五个考量因素众所周知,分布式数据库自身具备水平扩展、高可用以及数据强一致等特点,除了这些能力,我们还十分看重它是否稳定、是否易运维、是否低成本、是否具备高性能、是否有丰富的生态。稳定性。当我们将业务迁移至分布式数据库后,服务的稳定性是特别重要的。对于用户来说,他们或许并不在乎一个产品的底层存储是什么,但一定在乎服务是否足够稳定。易运维。由于分布式数据库的门槛相对较高,如果它能提供一些智能化或平台化的运维工具,我们的运维人员所需的学习成本则会大大降低。性能。我们希望能在有限的节点,且在可容忍的延迟范围内,考察一下分布式数据库能支撑多大的吞吐量。

数据库选型时的五个考量因素


众所周知,分布式数据库自身具备水平扩展、高可用以及数据强一致等特点,除了这些能力,我们还十分看重它是否稳定、是否易运维、是否低成本、是否具备高性能、是否有丰富的生态。


稳定性。当我们将业务迁移至分布式数据库后,服务的稳定性是特别重要的。对于用户来说,他们或许并不在乎一个产品的底层存储是什么,但一定在乎服务是否足够稳定。


易运维。由于分布式数据库的门槛相对较高,如果它能提供一些智能化或平台化的运维工具,我们的运维人员所需的学习成本则会大大降低。


性能。我们希望能在有限的节点,且在可容忍的延迟范围内,考察一下分布式数据库能支撑多大的吞吐量。


生态。在将业务数据真正迁移到分布式数据库后,随着业务场景的丰富和数据量的增长,后续可能还会遇到各种各样的问题。如果数据库产品有一个良好的生态,就能帮助我们快速找到问题的解决方案。


成本。对于创业公司来说,降成本是一个无法避免的选型因素,就不再赘述了。


基于以上几个考察因素,翼鸥教育选择了解并测试业内流行的两款分布式数据库:TiDB 和 OceanBase(见图 1)。

图 1 TiDB 和 OceanBase 的主要特点


TiDB

TiDB 是一款支持混合事务处理和分析处理(Hybrid Transaction Analytical Processing,HTAP)的融合型数据库产品,可以做到水平扩容和缩容,也能达到金融级高可用能力,数据能够达到强一致。TiDB 的表数据可以自动分裂,不需要 DBA 介入,这个功能非常好用。同时,TiDB 的社区也很活跃,当我们遇到问题时,在 TiDB 社区中基本能找到解决方法。

OceanBase

OceanBase 也拥有 HTAP 能力、并具备水平扩容或缩容、金融级高可用、数据强一致这三个特点。在 OceanBase 3.x 版本中,如果表的数据比较大,需要我们进行手动分区,在 OceanBase 4.0 版本后,开始支持大数据自动分区。


我们认为 OceanBase 具备一个特别吸引人的能力,就是它支持多租户和资源隔离。一个集群在承担众多业务的情况下,做到业务不互相影响是非常重要的。而且,当我们遇到问题时,在 OceanBase 社区也能快速得到解决方案。此外我们发现 OceanBase 为了能让客户及时收到别人对自己提问、解答的回复,设置了消息提醒,通过服务号绑定社区帐号就能在我们的问题得到解答时第一时间看到。


在初步对 TiDB 和 OceanBase 进行考察后,我们根据翼欧教育的业务场景对两款数据库做了进一步的对比和测试。

TiDB 和 OceanBase 的对比测试


我们的对比测试不局限于压力测试,因为两款数据库的压力测试都有极高的性能表现,甚至 OceanBase 在 TPC-C、TPC-H 中都取得了世界级的突破,所以我们并不担心两款数据库的性能,而是从两个具体的业务场景中测试慢日志、CPU、事务延迟、数据同步、在线 DDL、压测响应等。

测试场景一:OceanBase 慢日志少,CPU、延迟指标表现平稳


第一个场景是翼鸥教育的某个 MySQL 业务集群(写峰值 1.3k,读峰值 3.5k,数据近 2TB),见图 2 ,其特点是单库分表,多分表之间存在关联查询,且存在多分表插入和更新等操作。

图 2 第一个测试场景概述


我们选择了 TiDB v6.1 和 OceanBase v3.1.4 进行测试与对比,测试所用的机器配置为 3 台 64C/256G/3T SSD。我们将线上的真实流量引入测试集群,测试的 TiDB 架构如图 3 所示,通过 DM 同步 MySQL 的 dml 操作,模拟写流量,写入 TiDB cluster 。再通过 TcpCopy 复制 MySQL 读流量,回放到 TiDB cluster 来模拟读流量。对 OceanBase 测试的架构也与其类似,通过 OMS 采集写流量,通过 Tcp Copy 拷贝和回放读流量,再回放到 OceanBase cluster。

图 3 TiDB 在第一个场景中测试的架构


通过对 TiDB 和 OceanBase 这两款产品的测试,我们得到了关于慢日志、CPU、延迟等方面的数据。


首先,对于慢日志,我们通过图 4 和图 5 可以看到。 TiDB 的慢日志比较多,OceanBase 也出现了慢日志,但次数较少。这是由于 TiDB 优化器不稳定,出现索引走错的情况,而 OceanBase 不支持倒序索引,其查询不走索引。

图 4 TiDB 慢日志测试数据

图 5 OceanBase 慢日志测试数据


其次,对于 CPU 指标,我们可以从图 6 和图 7 中的数据得知,由于 TiDB 的延迟发生了一些波动, TiDB 的 CPU 使用率也出现了较为明显的波动,而 OceanBase 的 CPU 使用率表现非常平稳。

图 6 TiDB 的 CPU 数据

图 7 OceanBase 的 CPU 数据


最后来看延迟指标,见图 8 与图 9,在整个测试过程中,TiDB 出现了几次小的波动,OceanBase 整体较为稳定。

图 8 TiDB 的延迟数据

图 9 OceanBase 的延迟数据


从延迟和 CPU 这两个角度来看,OceanBase 都要优于 TiDB。因为 TiDB 的数据在大于某个值后会自动拆分,数据会自动分散在各个节点上,而分表的查询或关联的更新基本走的都是分布式事务。OceanBase 支持本地事务,数据都在一个 zone 内,查询走的都是本地事务,所以其延迟比分布式事务低。

测试场景二: OceanBase 较 TiDB,数据清洗快 2.74 倍,数据同步快 2.6 倍


第二个测试场景是某业务需要从上游的多套 MySQL 集群汇集数据并清洗,数据清洗完成后提供线上服务。该业务场景的数据涉及多个上游集群,且清洗后的数据单表记录数最大达到 30 亿。

图 10 第二个测试场景概述


我们还是采用 TiDB v6.1 和 OceanBase v3.1.4 进行测试对比,机器配置仍为 3 台 64C/256G/3T SSD。在本次测试中,我们对两个数据库产品采用同一套清洗程序进行数据清洗,考察业务迁移后数据的压缩率、数据同步时间、数据清洗时间、在线 DDL 用时、业务接口压测响应时间。


测试 TiDB 的架构见图 11,通过 DM 把上游多个 MySQL 表的数据同步到下游的 TiDB cluster。在同步完数据后,业务程序会对同步过来的数据进行清洗,并将清洗完的数据写到本集群的新库中。

图 11 TiDB 在第二个场景中测试的架构


OceanBase 的测试架构如图 12 所示,与 TiDB 的测试架构类似。通过 OMS 采集上游的数据,再同步到 OceanBase cluster,业务程序也是在本集群进行数据的清洗,并将清洗完的数据写到本集群的新库中。

图 12 OceanBase 在第二个场景中测试的架构


经过测试,我们分别对比了 TiDB 和 OceanBase 在数据压缩率、数据同步时间、数据清洗时间、在线 DDL 用时、业务接口压测响应时间的表现。

1、数据压缩率对比

从图 13 来看,TiDB 和 OceanBase 对于单表各有优势。但前者的整体压缩率优于后者。

图 13 数据迁移后的压缩率对比

2、数据同步时间对比

我们并没有对同步的配置做优化,只是采用了默认的同步配置,发现 TiDB 所需的数据迁移时间是 50674 秒,OceanBase 只要 19406 秒。如图 14 所示,相当于 OceanBase 比 TiDB 的数据同步快 2.6 倍。

图 14 数据同步时间对比

3、数据清洗时间对比

数据清洗时间也关乎上线耗时,是业务迁移中比较重要的节点。我们的测试结果显示,同一套清洗程序,TiDB 的数据清洗用时是 OceanBase 的 2.74 倍,这意味着使用 OceanBase 的上线耗时比使用 TiDB 要短。因此,我们的研发人员对 OceanBase 的性能充满了信心和期待。

图 15 数据清洗时间对比

4、表在线 DDL 用时对比


如图 16 所示,OceanBase 在线 DDL 加索引的用时比 TiDB 短很多,尤其对于一些大表的改表用时,测试结果的差距非常明显。这一对比结果,让我们感到非常意外。

图 16 表在线 DDL 用时对比

5、接口压测相应时间对比


我们选取了五个核心接口,采用相同的压测线程数对同一接口进行压测,经过测试,我们发现 OceanBase 的响应比 TiDB 的响应快两倍。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
456 158
|
5月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1091 152
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
847 156
|
6月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
6月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
6月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
6月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
6月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
458 156

推荐镜像

更多