首页 >>  正文

oracle加并行查询

来源:baiyundou.net   日期:2024-09-21

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 陶杰

","gnid":"945b316720d50aa73","img_data":[{"flag":2,"img":[{"desc":"","height":"459","title":"","url":"https://p0.ssl.img.360kuai.com/t01cb92f80e1f9cc192.png","width":"1080"}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"pika","pub_time":1704978861000,"pure":"","rawurl":"http://zm.news.so.com/90186d16f209baef217ba52c3341466b","redirect":0,"rptid":"91dabbbad5de3217","rss_ext":[],"s":"t","src":"数据猿","tag":[{"clk":"ktechnology_1:mysql","k":"mysql","u":""}],"title":"【金猿技术展】TiDB DDL任务的并行处理方法——打造更高效更灵活的DDL

和儿韦3529SELECT /*+ parallel(M,10) */ * FROM XSREMOBILE M ,请问一下/*+ parallel(M,10) */ *是怎么用的,语法是 -
蔚邢菲15631818138 ______ 是ORACLE的parallel execute,看看这个的执行计划和普通的SELECT * FROM的执行计划,应该能看出点不同. Oracle Parallel Query(OPQ)可以将一个SQL statement分成多个片,然后在独自的CPU上通过多个子查询进行并行运行.每个子查...

和儿韦3529oracle 多列合并查询 -
蔚邢菲15631818138 ______ select a.id,a.name,nvl(sum(b.quantity),0) quantity from a,b where a.id=b.id(+) group by a.id,a.name 我回答的比楼上早,忘记加group by了,呵呵

和儿韦3529oracle中怎么实现多表查询 -
蔚邢菲15631818138 ______ 查询,首先你得清楚你需要什么数据,以及你所需要的数据,存在于哪些表中,或者说与哪些表有关联.SQL 语句基本查询语法: 不加条件查询,select * from 表名 ; 加条件查询:select * from 表名 where 满足的条件; 多表查询 :select a.* ,b.* from 表1 a,表2 b where a.字段=b.字段;

和儿韦3529Oracle数据库,一条SQL语句插入多行数据? -
蔚邢菲15631818138 ______ 按照你现有的表创建历史数据: create table khqfbd_1 (khn int, khqxh int, khmc varchar2(20), qsrq varchar2(8), jsrq varchar2(8), bz varchar2(100)); insert into khqfbd_1 values (2024,1,'第一季度','20240101','20240331','1'); insert into khqfbd_1 ...

和儿韦3529Oracle 外部表是做什么用的 -
蔚邢菲15631818138 ______ Oracle 外部表外部属性 默认目录:指定外部表的默认目录. 目录:设置外部目录. 位置:设置外部源位置. 访问驱动程序:设定外部表的访问驱动程序,外部表的默认类型是 ORACLE_LOADER. 否决限制:指定在外部数据查询中可以出现...

和儿韦3529Oracle系统的特点 -
蔚邢菲15631818138 ______ ORACLE8对于对象模型采取较为现实和谨慎的态度,使用了对象/关系模型,即在完全支持传统关系模型的基础上,为对象机制提供了有限的支持.ORACLE8不仅能够处理传统的表结构信息,而且能够管理由C++,Smalltalk 以及其它开发工具生...

和儿韦3529ORACLE 快速查询数据SQL语句 -
蔚邢菲15631818138 ______ 单条匹配,没有索引也不准备建索引.只能靠并发来加快检索速度,最快的语句应该是:select /*+ full(A) parallel(A,10) */ * from A where b=c;理由有2:full table scan 时,oracle会一次读出多个block加快速度parallel指定并发10线程检索,当然如果允许,你指定20也可以.最好等于CPU个数. 不过还是建议在b列上建索引,这是最好的办法.

和儿韦3529oracle中SQL如何把两个表中相关数据相加 -
蔚邢菲15631818138 ______ select field1, field2 from table1 union select field1, field2 from table2 或 select field1, field2 from table1 union all select field1, field2 from table2

和儿韦3529如何查询oracle 数据库并行度 -
蔚邢菲15631818138 ______ 数据库表空间的大小?SQL>select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; TABLESPACE_NAME SUM(BYTES)/1024/1024

和儿韦3529怎么更好的利用Oracle全文检索 -
蔚邢菲15631818138 ______ 对多字段建立全文索引 很多时候需要从多个文本字段中查询满足条件的记录,这时就需要建立针对多个字段的全文索引,例如需要从pmhsubjects(专题表)的subjectname(专题名称)和briefintro(简介)上进行全文检索,则需要按以下步骤进...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024