Pingcap 技术。
该技术由Pingcap提交,并参与“数据猿年度金猿策划活动-2023大数据行业年度创新技术突破榜暨奖项”评选。
目前,数据定义语言(DDL)语句的分布式调度系统主要分为以下几种集中式实现:
1. 以oracle、mysql等传统单机或集群系统为例。 元数据锁系统通常通过锁定需要 DDL 更改的对象来协调各种 DDL 语句的执行顺序。 实现并发效果。
2.分布式数据库系统Ocean Base,TDSQL数据库也通过在分布式系统中实现类似的MDL锁来实现并发DDL语句调度的效果。
如何保证当多个DDL工作线程(也称为任务执行单元)同时执行DDL任务时,用户数据库中的对象定义或对象存储数据不会不一致。
本申请实施例提供一种DDL任务的并行处理方法、计算节点、电子设备和计算机可读存储介质,可以解决现有技术的上述问题。 它为涉及数据库字段的DDL任务提供了一种并行处理方法、计算节点和电子设备。 该方法包括:获取作业任务表,用于记录未处理的DDL任务的相关信息,包括DDL任务进入数据库系统的顺序和DDL任务对应的变更对象所在的数据模式; 确定要执行的第一个DDL任务,从作业任务表中确定符合预定任务并行处理规则的第二个DDL任务; 目标的第二个 DDL 任务与第一个 DDL 任务并行处理。 该应用实施例实现逻辑简单,具有较强的可扩展性,能够适应不同数据块形式的部署,不存在像现有技术那样依赖类似元数据锁模式协调执行顺序实现并发DDL调度效果的限制。
TIDB 是由 PingCap 自主设计开发的开源分布式关系型数据库,是一款融合分布式数据库产品,支持混合事务处理和分析处理(HTAP),具有水平伸缩或伸缩、金融级高可用、实时 HTAP、云原生分布式数据库,兼容 MySQL 57 协议、MySQL生态等重要特性。
数据定义语言 (DDL) 用于定义数据对象(数据库、表、字段)。 它不是一种编程语言,而是SQL语言(结构化查询语言)的一个组成部分。 SQL是一种标准化语言,用于在关系数据库(如MySQL、SQL Server、Oracle等)中执行操作。 SQL 语言有四种类型:数据定义语言 (DDL)、数据操作语言 (DML)、数据控制语言 (DCL) 和事务控制语言 (TCL)。 使用 DDL,我们可以创建、修改和删除数据库、表和视图等对象。
目前,数据定义语言语句的分布式调度系统主要分为以下几种集中式实现:
1. 以oracle、mysql等传统单机或集群系统为例。 元数据锁系统通常通过锁定需要 DDL 更改的对象来协调各种 DDL 语句的执行顺序。 实现并发效果。
2.分布式数据库系统Ocean Base,TDSQL数据库也通过在分布式系统中实现类似的MDL锁来实现并发DDL语句调度的效果。
如何保证当多个DDL工作线程(也称为任务执行单元)同时执行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 更加灵活高效,新的底层架构也为后续元数据锁定、分布式任务等功能奠定了坚实的基础。
某互联网教育公司顾问。
陶杰.