【金猿技术展】TiDB DDL任务的并行处理方法——打造更高效更灵活的DDL
【数据猿导读】 该技术由PingCAP投递并参与“数据猿年度金猿策划活动——2023大数据产业年度创新技术突破榜单及奖项”评选。
PingCAP技术
该技术由PingCAP投递并参与“数据猿年度金猿策划活动——2023大数据产业年度创新技术突破榜单及奖项”评选。
目前数据定义语言(data definition language,DDL)语句的分布式调度系统主要分为如下集中实现:
1、以Oracle,MySQL等传统数据库为例的传统单机或者集群系统。通常采用实现一个Meta data Lock系统,通过对于需要进行DDL变更的对象加锁的方式,来协调各种DDL语句执行的先后顺序。达到并发效果。
2、分布式数据库系统Ocean Base,TDSQL的数据库也是通过采取在分布式系统中实现一种类似MDL锁的方式来达成并发DDL语句调度的效果。
如何保证在多个DDL worker(也称之为任务执行单元)在并发执行DDL任务的时候,不会造成用户数据库中对象定义或者对象存储的数据的不一致性,是需要解决的问题。
本申请实施例提供了一种DDL任务的并行处理方法、计算节点、电子设备、计算机可读存储介质,可以解决现有技术的上述问题。提供了一种DDL任务的并行处理方法、计算节点及电子设备,涉及数据库领域。该方法包括:获得作业任务表,作业任务表用于记录未处理完成的DDL任务的相关信息,相关信息包括DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式;确定正在执行的第一DDL任务,从作业任务表中确定符合预先确定的任务并行处理规则的第二DDL任务;将目标第二DDL任务与第一DDL任务并行处理。本申请实施例实现逻辑简单,并且可扩展性强,能够适应不同的数据块形态的部署,不存在现有技术那样依赖类似于元数据锁方式协调执行顺序达成并发DDL调度效果的限定。
技术说明
TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。
数据库模式定义语言DDL(Data Definition Language),用来定义数据对象(数据库,表,字段)。它并非程序设计语言,而是SQL语言(结构化查询语言)的组成部分。SQL语言是在关系型数据库(诸如Mysql、SQL Server、Oracle等)里进行相关操作的标准化语言。SQL语言包括四种类型:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。通过DDL,我们可以创建、修改和删除数据库、表、视图等对象。
目前数据定义语言语句的分布式调度系统主要分为如下集中实现:
1、以Oracle,MySQL等传统数据库为例的传统单机或者集群系统。通常采用实现一个Meta data Lock系统,通过对于需要进行DDL变更的对象加锁的方式,来协调各种DDL语句执行的先后顺序。达到并发效果。
2、分布式数据库系统Ocean Base,TDSQL的数据库也是通过采取在分布式系统中实现一种类似MDL锁的方式来达成并发DDL语句调度的效果。
如何保证在多个DDL worker(也称之为任务执行单元)在并发执行DDL任务的时候,不会造成用户数库中对象定义或者对象存储的数据的不一致性,是需要解决的问题。
TiDB DDL 模块从设计之初就选择了在线异步变更的模式,为 TiDB 的用户提供了不停机变更业务的服务能力。
本技术专利提供了一种DDL任务的并行处理方法,可以解决现有技术的上述问题。所述技术方案如下:
根据本专利实施例的一个方面,提供一种数据定义语言DDL任务的并行处理方法,由数据库系统中的目标计算节点执行,所述方法包括:
l获得作业任务表,所述作业任务表用于记录未处理完成的DDL任务的相关信息,所述相关信息包括DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式;
● 确定正在执行的第一DDL任务,从所述作业任务表中确定符合预先确定的任务并行处理规则的第二DDL任务,所述任务并行处理规则与DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式相关;
● 将所述目标第二DDL任务与所述第一DDL任务并行处理。
根据本专利实施例的另一个方面,提供了一种数据库系统中的目标计算节点,该节点包括:
● 作业任务表模块,用于获得作业任务表,所述作业任务表用于记录未处理完成的DDL任务的相关信息,所述相关信息包括DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式;
● 任务确定模块,用于确定正在执行的第一DDL任务,从所述作业任务表中确定符合预先确定的任务并行处理规则的第二DDL任务,所述任务并行处理规则与DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式相关;
● 并行处理模块,用于将所述第二DDL任务与所述第一DDL任务并行处理。
根据本专利实施例的另一个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行所述计算机程序以实现上述DDL任务的并行处理方法的步骤。
根据本专利实例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述DDL任务的并行处理方法的步骤。
本专利实施例提供的技术方案带来的有益效果是:
通过获取任务作业任务表,任务作业任务表中记录了至少一个DDL任务的相关信息,基于任务并行处理规则,从作业任务表中确定与处理中的第一DDL任务可并行处理的第二DDL任务,将第二DDL任务与第一DDL任务并行处理,实现逻辑简单,并且可扩展性强,能够适应不同的数据块形态的部署,不存在现有技术那样只能从队列中按排序选择DDL任务的限定。
本申请具有以下技术效果:
1、方案实现逻辑简单,可扩展性强;
2、方案能够充分利用集群整体资源,自动进行任务的负载均衡,具备很强的在线扩展性;
3、能够适应不同的数据库形态的部署;
a)单实例数据库部署
b)集群单主节点,全集群分布式DDL任务调度
c)集群分布式DDL任务调度(多主节点)
4、对于分布式系统中故障恢复有特别良好的表现,不会像锁实现方案中会遇到分布式死锁检测的复杂度问题,或者是单点锁中控的性能和故障单点问题;
5、故障恢复简单,高效,本方案能够在基本上无需额外操作的情况下,使得DDL任务调度恢复正常;
6、很容易在本模型实现特定的分布式调度规则,将特定的DDL任务调度到特定的计算节点上执行,例如通过数据的位置,多租户的可用计算节点等等条件来调度。
★专利申请号/公开号:CN115687378A
开发团队
·带队负责人姓名:黄文俊
黄文俊,PingCAP TiDB 数据服务研发工程师,同时也是 TiDB 中 CTE 功能开发的负责人,致力于 TiDB DDL 的演进。
团队其他重要成员姓名:李霞、黄潇、刘奇、黄东旭、崔秋
·隶属机构:PingCAP
PingCAP 是业界领先的企业级开源分布式数据库企业,提供包括开源分布式数据库产品、解决方案与咨询、技术支持与培训认证服务,致力于为全球行业用户提供稳定高效、安全可靠、开放兼容的新型数据服务平台,解放企业生产力,加速企业数字化转型升级。
相关评价
DDL 操作是数据库管理操作中最繁重的一种,本技术专利提供了一种DDL任务的并行处理方法,实现逻辑简单,并且可扩展性强,能够适应不同的数据块形态的部署。
——某头部智能硬件
该专利使得TiDB 的 DDL 更加灵活,更加高效,同时新的底层架构也为后续元数据锁和分布式任务等功能打下了坚实的基础。
——某互联网教育公司顾问
DBA 陶杰
来源:数据猿