CN116186077A - 信息传递方法、装置、数据库系统、电子设备和存储介质 - Google Patents
信息传递方法、装置、数据库系统、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116186077A CN116186077A CN202310208773.8A CN202310208773A CN116186077A CN 116186077 A CN116186077 A CN 116186077A CN 202310208773 A CN202310208773 A CN 202310208773A CN 116186077 A CN116186077 A CN 116186077A
- Authority
- CN
- China
- Prior art keywords
- information
- execution
- data
- collector
- operators
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种信息传递方法、装置、数据库系统、电子设备和存储介质,该方法应用于数据库的执行引擎,执行引擎包括调度器。该方法包括:获得多个算子,其中,多个算子包括信息收集者和信息订阅者;识别多个算子中的信息收集者与信息订阅者;建立信息订阅者、调度器分别与信息收集者之间的匹配关系;获取信息收集者收集的执行信息;对执行信息进行处理;以及按照预定规则将处理后的执行信息发送至与信息收集者相匹配的信息订阅者和调度器。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种信息传递方法、装置、数据库系统、电子设备和存储介质。
背景技术
随着信息技术得到快速发展,数据呈爆发式的增长,对大量数据进行处理的场景变得越来越常见。结构化查询语言(SQL)是一种与数据库通信的语言,用于从数据库中读写数据。在数据库执行SQL语句的过程中,数据库中的执行引擎需要对SQL语句制定执行计划,再依据执行计划对SQL语句的执行过程进行规范。在相关技术中,数据库的执行引擎对数据库中的数据进行估算,以生成统计信息,并基于估算的统计信息优化执行计划,然而数据库执行引擎因为估算的统计信息不精确,会造成选择的执行计划不优,以及选择的算子算法不优,从而导致数据库执行性能较差。
发明内容
本申请实施例提供一种信息传递方法、装置、数据库系统、电子设备和存储介质,以解决相关技术中存在的问题。
第一方面,本申请实施例提供了一种信息传递方法,应用于数据库的执行引擎,所述执行引擎包括调度器,所述信息传递方法包括:获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者;识别所述多个算子中的所述信息收集者与所述信息订阅者;建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系;获取所述信息收集者收集的执行信息;对所述执行信息进行处理;以及按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
第二方面,本申请实施例提供了一种信息传递装置,部署于数据库的执行引擎,所述执行引擎包括调度器,所述信息传递装置包括:算子获得单元,配置来获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者;算子识别单元,配置来识别所述多个算子中的所述信息收集者与所述信息订阅者;关系建立单元,配置来建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系;信息获取单元,配置来获取所述信息收集者收集的执行信息;信息处理单元,配置来对所述执行信息进行处理;以及信息发送单元,配置来按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
第三方面,本申请实施例提供了一种数据库系统,包括计算节点,所述计算节点包括调度器,所述计算节点配置来执行以下操作:获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者;识别所述多个算子中的所述信息收集者与所述信息订阅者;建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系;获取所述信息收集者收集的执行信息;对所述执行信息进行处理;以及按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
第四方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器在执行所述计算机程序时实现上述任一项所述的方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法。
与现有技术相比,本申请具有如下优点:
依据本申请实施例,数据库的执行引擎可以通过作为信息收集者的算子实时收集执行过程中的执行信息,并将该信息处理后传递至调度器以及作为信息订阅者的算子,以进行计划重优化和算子算法自适应选择,可以有效地提升数据库执行SQL语句的效率,更快地查询出满足用户需求的数据。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,可依照说明书的内容予以实施,并且为了让本申请的上述和其他目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请的一些实施方式,而不应将其视为是对本申请范围的限制。
图1是示出本申请一实施例的信息传递方案的示意图;
图2是示出本申请一实施例的信息传递方法的流程图;
图3是示出本申请一实施例的SQL语句执行的示意图;
图4是示出本申请一实施例的信息传递装置的结构框图;以及
图5是示出本申请一实施例的电子设备的框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的构思或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的,而非限制性的。
为便于理解本申请实施例的技术方案,以下对本申请实施例的相关技术进行说明。以下相关技术作为可选方案与本申请实施例的技术方案可以进行任意结合,其均属于本申请实施例的保护范围。
在本申请之前的一项相关技术中,数据库的执行引擎为了对执行计划进行优化,在执行之前对数据库中数据的统计信息进行预估,该相关技术假定过去一段时间内数据是不变的,旧的统计信息能够准确反映现在时段的数据分布情况。然而执行前预估的统计信息与执行时的信息存在着较大误差,数据库的执行引擎会因为预估的统计信息不精确,会造成选择的执行计划不优,以及选择的算子算法不优,从而导致数据库执行性能较差。
有鉴于此,本申请实施例提供了一种在数据库执行过程中进行信息传递方案,以全部或部分解决上述相关技术中存在的问题。为了更清楚地展示本申请实施例中提供的信息传递方案,以下结合图1对该信息传递方案进行说明。图1是示出本申请一实施例的信息传递方案示意图。信息传递装置作为数据库的执行引擎中的重要组件,收集执行层中算子收集的执行信息,执行信息包括已下中的至少一项:统计信息、数据特征、资源使用。应注意的是,上文所描述的执行信息仅是示例性的,本领域技术人员可以根据本申请的技术原理对执行信息的内容进行选择性设置,只要能够实现本申请的原理即可。信息传递装置在收集了执行信息后,对执行信息进行处理,将处理后的执行消息返回给调度层的调度器进行计划重优化,同时将处理后的执行消息返回给执行层中的算子进行算子算法自适应选择。
例如,数据库的执行引擎在收到SQL语句后,会生成执行计划,即执行引擎执行SQL语句的具体步骤。计划重优化是调度器基于处理后的执行信息,对还未执行的执行计划进行重优化,以对未执行的部分得到一个更优的计划。算子在计算出正确结果的基础上,不同的实现算法会导致不同场景下的性能差异。算子算法自适应选择是指算子利用处理后执行信息,进行动态的算法选择,提高算子的计算性能。因此,本申请实施例提供的在数据库执行过程中进行信息传递的方法,可以使调度器和算子基于精确的执行信息进行优化,可以有效地提升数据库的执行效率。在下文中,如果没有额外说明,将以SQL语句作为执行引擎收到的语句的示例进行说明。
本申请一实施例提供了一种信息传递方法,该方法应用于数据库的执行引擎,该执行引擎包括调度器,该执行引擎可以是分布式执行引擎,也可以是集中式执行引擎。下文将参照图2对本申请的信息传递方法200进行说明。图2是示出了本申请一实施例的信息传递方法200的流程图。如图2所示,所述信息传递方法200可以包括如下步骤S201至S206。下面将结合具体实施例对步骤S201至步骤S206进行详细说明。
首先进入步骤S201。在步骤S201,获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者。
以SQL语句为例,SQL语句是操作数据库和数据库中数据的最常用的方法,通过SQL标准中定义的一系列的关键字,数据库的用户可以管理数据库和操作数据库中的数据。一个SQL语句通常可以包括一个或多个算子,一个算子负责完成一个基本的数据处理逻辑。基本的算子包括scan算子、join算子、aggregation算子、filter算子等算子。
在一实施例中,例如,数据库执行引擎接收到的SQL语句为SELECT*FROM T1 JOINT2 ON T1.id=T2.id WHERE T2.num>100。从该SQL语句可知,该数据库存在命名为T1的数据表以及命名为T2的数据表。从该SQL语句中获得的算子包括join算子,T1数据表的scan算子,T2数据表的scan算子、where算子,在这些算子中,既有信息收集者,又有信息订阅者。信息收集者在SQL语句执行的过程中收集运行时的执行信息,信息订阅者接收信息收集者收集的执行信息,以对算子算法进行自适应选择。
接下来进入步骤S202。在步骤S202,识别所述多个算子中的所述信息收集者与所述信息订阅者。
在一实施例中,SQL语句对两个表进行连接操作(即该SQL语句中存在join算子),假设连接的两个表一个是大表(即数据量大),另一个是小表(即数据量小)。小表的scan算子可以被识别为信息收集者,大表的scan算子可以被识别为信息订阅者。以SQL语句是SELECT*FROM T1 JOIN T2 ON T1.id=T2.id WHERE T2.num>100为例,假设T1数据表的数据量大于T2数据表的数据量,例如T1数据表存储有100000条数据,T2数据表存储有3000条数据。下文将参照图3对该SQL语句的执行过程进行说明,图3是示出本申请一实施例的SQL语句执行的示意图。如图3所示,首先where算子在T2数据表上进行num>100的筛选,然后scan算子在T2数据表扫描符合num>100筛选条件的数据,接下来scan算子在T1数据表扫描所有数据,最后join算子再将符合T1.id=T2.id条件的T1数据表的数据和T2数据表的数据连接起来。在该执行过程中,在进行join运算时需要将T1数据表的全部数据传输至join算子,因为T1数据表的数据量远大于T2数据表的数据量,所以T1数据表中的大部分数据不会被join算子选中,该执行过程效率低。如果在join运算之前,T2数据表的scan算子提前将执行信息传递至T1数据表的scan算子,T1数据表的scan算子在进行扫描的过程中基于T2数据表scan算子传递的执行信息,提前对T1数据表的数据进行过滤,则该执行过程的效率将大幅提高。因此,T2数据表的scan算子被识别为信息收集者,T1数据表的scan算子被识别为信息订阅者。
在一实施例中,SQL语句基于多个预定条件对一个表的数据进行查询(即该SQL语句中存在where算子),该表的scan算子可以被识别为信息收集者,该表的where算子可以被识别为信息订阅者。以SQL语句是SELECT*FROM T1 WHERE T1.a>1and T1.b>2and T1.c>3为例,T1数据表的where算子需要按预定条件(即T1.a>1and T1.b>2and T1.c>3)对T1数据表中的数据进行筛选。例如,T1数据表一共有10000条数据,T1数据表的scan算子在扫描T1数据表的过程中,根据T1数据表c列的数据分布得知,T1.c>3这个条件能够筛选掉99.9%的数据,那么满足T1.c>3这个条件的数据只有10条。如果先执行T1.c>3,再执行T1.a>1and T1.b>2,那么T1.a>1and T1.b>2一共需要处理的数据只有10条,可以极大地提高数据库的执行效率。能够筛选掉越多数据的预定条件的排序也就越靠前,所以对执行信息进行处理后,预定条件的排序由原始的排序T1.a>1and T1.b>2and T1.c>3转换为排序T1.c>3and T1.a>1and T1.b>2。T1数据表的scan算子将收集的执行信息发送至T1数据表的where算子,可以优化where算子对数据进行过滤的效率。因此T1数据表的scan算子被识别为信息收集者,where算子被识别为信息订阅者。
本领域技术人员应理解的是,上文所述的SQL语句及其执行过程仅是示例性的,并不意在对本申请进行限制。本领域技术人员可以根据本申请的技术原理对多个算子中的信息收集者和信息订阅者进行选择,只要能够实现本申请的技术原理即可。
接下来进入步骤S203。在步骤S203,建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系。
数据库的执行引擎需要分别建立信息订阅者与信息收集者之间的匹配关系,以及调度器与信息收集者之间的匹配关系,以便将信息收集者将收集的执行信息传递至其相匹配的信息订阅者和调度器。调度器的作用是将SQL语句拆分为多个子任务,使其进行并行处理。在一实施例中,可以通过JSON(JavaScript Object Notation,JS对象简谱)数据结构,使用键值对的方式建立信息订阅者与信息收集者、调度器与信息收集者之间的匹配关系。例如,在建立信息订阅者与信息收集者匹配关系的过程中,将信息收集者作为键进行存储,将信息订阅者作为值进行存储;在建立调度器与信息收集者匹配关系的过程中,将信息收集者作为键进行存储,将调度器作为值进行存储。这里仅是出于示例性说明的需要对信息订阅者与信息收集者之间的匹配关系、调度器与信息收集者之间的匹配关系以及这种匹配关系的建立过程进行说明。本申请的技术原理还可以覆盖到既有的、或未来研发出的此类匹配关系。
接下来进入步骤S204。在步骤S204,获取所述信息收集者收集的执行信息。
在一实施例中,以SQL语句是SELECT*FROM T1 JOIN T2 ON T1.id=T2.id WHERET2.num>100为例,在该SQL语句中,T2数据表的scan算子是信息收集者,T2数据表的scan算子在扫描数据的过程中,对执行信息进行收集,该执行信息例如可以包括T2数据表的行数,某一列中不同值的个数、最大值、最小值等信息。
在一些实施例中,执行信息包括以下中的至少一项:统计信息、数据特征、资源使用。统计信息可以是诸如数据表行数,某一列中不同值的个数、最大值、最小值等这样的信息。数据特征可以是诸如极差、方差、标准差等这样的信息。资源使用可以是诸如存储资源使用率、计算资源使用率等这样的信息。
接下来进入步骤S205。在步骤S205,对所述执行信息进行处理。
在一实施例中,数据库的执行引擎从信息收集者中获取的执行信息为某一列中去重后所有的值。以SQL语句是SELECT*FROM T1 JOIN T2 ON T1.id=T2.id WHERE T2.num>100为例,例如,数据库的执行引擎获取的执行信息为T2数据表id列中去重后所有的值,数据库的执行引擎还需要对该执行信息进行处理,以生成信息订阅者和调度器可以用来优化执行效率的信息。
在一实施例中,对所述执行信息进行处理,包括:创建二进制数组;选取至少一个哈希函数;通过所述至少一个哈希函数将所述执行信息映射到所述二进制数组中,以生成布隆过滤器。
在一些实施例中,数据库的执行引擎可以创建二进制数组。数组是用来存储一组数据的集合,这些被存储的数据的类型是相同的,所以二进制数组是用来存储二进制类型的一组数据的集合。二进制类型的数据则说明了该数据只能为0或1。数据库的执行引擎在创建二进制数组后,将该二进制数组的所有数据都设置为0。例如,数据库的执行引擎创建了一个长度为8的二进制数组,该二进制数组的初始数据状态为{0,0,0,0,0,0,0,0}。
在创建了二进制数组之后,数据库的执行引擎还可以选取至少一个哈希函数。哈希函数能够将任意长度的输入值转变成固定长度的输出值,该值称为散列值。哈希函数具有单向性的特点,从哈希值不能反向推导出原始数据,从而保障了哈希函数输入值的安全性。数据库的执行引擎选取至少一个哈希函数,以进行后续的哈希运算。
数据库的执行引擎可以通过所述至少一个哈希函数将所述执行信息映射到所述二进制数组中,以生成布隆过滤器。以SQL语句是SELECT*FROM T1 JOIN T2 ON T1.id=T2.id WHERE T2.num>100为例,数据库的执行引擎选取了一个哈希函数Hash1,数据库的执行引擎获取的执行信息为T2数据表id列中去重后所有的值,例如为110、120、121。数据库的执行引擎将获取的执行信息输入Hash1中,并将哈希值对二进制数组的长度取模,例如,二进制数组的长度为8,将110输入Hash1中再对8取模的结果为3,即Hash1(110)%8=3,将3映射到该二进制数组的下标,并将该下标对应的数据设置为1,则该二进制数组由原始的{0,0,0,0,0,0,0,0}更新为{0,0,0,1,0,0,0,0}。通过哈希函数映射了执行信息的二进制数组为布隆过滤器,布隆过滤器用于判断一个数据是否在一个集合中,0代表该数据不存在该集合中,1代表该数据存在该集合中。生成布隆过滤器之后,数据库的执行引擎可以将该布隆过滤器器传递至信息订阅者,即T1数据表的scan算子,以便信息订阅者在join之前对数据进行过滤,提高执行效率。上文对布隆过滤器的选择仅是示例性的,本领域技术人员可以根据实际情况选择可以用于信息消费者的过滤器,只要能够实现本实施例的原理即可。
在另一实施例中,数据库的执行引擎可以基于信息收集者算子收集的执行信息,将该执行信息生成直方图。直方图可以包括频率直方图和TOP-K直方图。频率直方图用于表示某一列中各个数值出现的频率,其中横轴是一个个按序排列好的区间,其高度代表该区间内数据出现的次数(频率)。TOP-K直方图在直方图上为列中频率最高的前K个数值。
在一实施例中,对所述执行信息进行处理,包括:判断所述信息收集者对应的算子是否分布在不同的数据片段上,其中,如果所述信息收集者对应的算子分布在不同的数据片段上,则将所述执行信息聚合为全局信息。在海量数据的情况下,算子被拆分到不同的机器上,对全局数据的一部分进行处理,从而实现算子的并发执行,以提高SQL语句的执行效率。如果数据库的执行引擎接收的执行信息是一个算子针对整个数据集的一部分收集的执行信息,则该算子分布在不同的数据片段上。以SQL语句是SELECT*FROM T1 JOIN T2ONT1.id=T2.id WHERE T2.num>100为例,T2数据表存储有3000条数据。首先判断信息收集者对应的算子是否分布在不同的数据片段上,在对T2数据表扫描的过程中,为了扫描性能的提升,可以将T2数据表拆分为3个数据片段,即每个数据片段上有1000条数据,并将信息收集者对应的scan算子与这三个数据片段分别运行在3台不同的机器上。在这种情况下信息收集者对应的算子分布在3个不同的数据片段上,因此每个scan算子只能扫描一个数据片段,例如,scan算子在第一个数据片段上收集的执行信息是T2数据表id列去重后所有的值为100,101,102,scan算子在第二个数据片段上收集的执行信息是T2数据表id列去重后所有的值为110,111,112,scan算子在第三个数据片段上收集的执行信息是T2数据表id列去重后所有的值为120,121,122,则此时数据库的执行引擎需要将上述3个局部的执行信息聚合为全局的执行信息,即将上述3个数据片段上T2数据表id列去重后所有的值聚合为100,101,102,110,111,112,120,121,122。
接下来进入步骤S206。在步骤S206,按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
数据库的执行引擎在对执行信息进行处理之后,需要将处理后的执行信息发送至与信息收集者相匹配的信息订阅者和调度器。在一实施例中,数据库的执行引擎可以将布隆过滤器发送至信息消费者,使得信息消费者可以基于布隆过滤器中的信息选择更优的算法,提高算子的执行效率。在另一实施例中,数据库的执行引擎可以将直方图发送至调度器,使得调度器在更宏观的层面上对执行计划中还未执行的计划进行重优化,在未执行的计划部分得到一个更优的计划,提高执行效率。
在一实施例中,按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器,包括:建立与所述信息订阅者之间的广播通道;以及通过所述广播通道,将所述处理后的执行信息发送至所述信息订阅者。
在一些实施例中,在海量数据的情况下,作为信息订阅者的算子可以被拆分到不同的机器上,实现算子的并发执行,以提高SQL语句的执行效率。因此需要建立与多个信息订阅者之间的广播通道,以较低传输开销通过该广播通道将处理后的执行发送传输至信息订阅者,节约了因多个信息订阅者而建立多条传输通道造成的高通信成本,上述多个信息订阅者与某个信息收集者相匹配。以SQL语句是SELECT*FROM T1 JOIN T2 ON T1.id=T2.id WHERE T2.num>100为例,T1数据表有100000条数据,T1数据表的scan算子为信息订阅者。在对T1数据表扫描的过程中,为了扫描性能的提升,可以将T1数据表拆分为20个数据片段,即存在20个信息订阅者,这20个信息订阅者与信息收集者(即T2数据表的scan算子)相匹配。此时数据库的执行引擎只需要建立一条与该20个信息订阅者相连接的广播通道,而不是分别建立20条传输通道,极大降低了执行信息的传输开销。
在一些实施例中,在建立广播通道之后,数据库的执行引擎将处理后的执行信息发送至该广播通道,然后连接于该广播通道的信息订阅者都可以通过该广播通道接收处理后的执行信息。
在一实施例中,处理后的执行信息是按预定条件的排序。以SQL语句是SELECT*FROM T1 WHERE T1.a>1and T1.b>2and T1.c>3为例,T1数据表的where算子需要按预定条件(即T1.a>1and T1.b>2and T1.c>3)对T1数据表中的数据进行筛选。例如,T1数据表一共有10000条数据,T1.c>3这个条件能够筛选掉99.9%的数据,那么满足T1.c>3这个条件的数据只有10条。所以应该先执行T1.c>3,再执行T1.a>1and T1.b>2,那么T1.a>1and T1.b>2一共需要处理的数据只有10条,可以极大地提高数据库的执行效率。能够筛选掉越多数据的预定条件的排序也就越靠前,所以对执行信息进行处理后,预定条件的排序由原始的排序T1.a>1and T1.b>2and T1.c>3转换为排序T1.c>3and T1.a>1and T1.b>2。数据库的执行引擎之后再将该按预定条件的排序发送至信息订阅者,以便信息订阅者可以更高效地执行筛选数据的过程。
与本申请实施例提供的方法的应用场景以及方法相对应地,本申请实施例还提供一种信息传递装置400,部署于数据库的执行引擎,所述执行引擎包括调度器,下文将参照图4对本申请的信息传递装置400进行说明。图4是示出本申请一实施例的信息传递装置的结构框图。如图4所示,信息传递装置400可以包括:算子获得单元401,算子识别单元402,关系建立单元403,信息获取单元404,信息处理单元405以及信息发送单元406。
算子获得单元401,配置来获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者。
算子获得单元401可以是数据库的执行引擎中的一个组件,数据库的执行引擎通过该组件来获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者。
在一实施例中,例如,数据库执行引擎接收到的SQL语句为SELECT*FROM T1 JOINT2 ON T1.id=T2.id WHERE T2.num>100。从该SQL语句可知,该数据库存在命名为T1的数据表以及命名为T2的数据表。从该SQL语句中获得的算子包括join算子、T1数据表的scan算子,T2数据表的scan算子、where算子,在这些算子中,既有信息收集者,又有信息订阅者。信息收集者在SQL语句执行的过程中收集运行时的执行信息,信息订阅者接收信息收集者收集的执行信息,以对算子算法进行自适应选择。
算子识别单元402,配置来识别所述多个算子中的所述信息收集者与所述信息订阅者。
算子识别单元402可以是数据库的执行引擎中的一个组件,数据库的执行引擎通过该组件来识别所述多个算子中的所述信息收集者与所述信息订阅者。
在一实施例中,SQL语句对两个表进行连接操作(即该SQL语句中存在join算子),假设连接的两个表一个是大表(即数据量大),另一个是小表(即数据量小)。小表的scan算子可以被识别为信息收集者,大表的scan算子可以被识别为信息订阅者。以SQL语句是SELECT*FROM T1 JOIN T2 ON T1.id=T2.id WHERE T2.num>100为例,假设T1数据表的数据量大于T2数据表的数据量,例如T1数据表存储有100000条数据,T2数据表存储有3000条数据。下文将参照图3对该SQL语句的执行过程进行说明,图3是示出本申请一实施例的SQL语句执行的示意图。如图3所示,首先where算子在T2数据表上进行num>100的筛选,然后scan算子在T2数据表扫描符合num>100筛选条件的数据,接下来scan算子在T1数据表扫描所有数据,最后join算子再将符合T1.id=T2.id条件的T1数据表的数据和T2数据表的数据连接起来。在该执行过程中,在进行join运算时需要将T1数据表的全部数据传输至join算子,因为T1数据表的数据量远大于T2数据表的数据量,所以T1数据表中的大部分数据不会被join算子选中,该执行过程效率低。如果在join运算之前,T2数据表的scan算子提前将执行信息传递至T1数据表的scan算子,T1数据表的scan算子在进行扫描的过程中基于T2数据表scan算子传递的执行信息,提前对T1数据表的数据进行过滤,则该执行过程的效率将大幅提高。因此,T2数据表的scan算子被识别为信息收集者,T1数据表的scan算子被识别为信息订阅者。
关系建立单元403,配置来建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系。
关系建立单元403可以是数据库的执行引擎中的一个组件,数据库的执行引擎通过该组件来建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系。
数据库的执行引擎需要分别建立信息订阅者与信息收集者,调度器与信息收集者之间的匹配关系,以便将信息收集者将收集的执行信息传递至其相匹配的。调度器的作用是将SQL语句拆分为多个子任务,使其进行并行处理。在一实施例中,可以通过JSON(JavaScript Object Notation,JS对象简谱)数据结构,使用键值对的方式建立信息订阅者与信息收集者,调度器与信息收集者之间的匹配关系。例如,在建立信息订阅者与信息收集者匹配关系的过程中,将信息收集者作为键进行存储,将信息订阅者作为值进行存储;在建立调度器与信息收集者匹配关系的过程中,将信息收集者作为键进行存储,将调度器作为值进行存储。
信息获取单元404,配置来获取所述信息收集者收集的执行信息。
信息获取单元404可以是数据库的执行引擎中的一个组件,数据库的执行引擎通过该组件来获取所述信息收集者收集的执行信息。
信息处理单元405,配置来对所述执行信息进行处理。
信息处理单元405可以是数据库的执行引擎中的一个组件,数据库的执行引擎通过该组件来对所述执行信息进行处理。
信息发送单元406,配置来按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
信息发送单元406可以是数据库的执行引擎中的一个组件,数据库的执行引擎通过该组件来按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
本申请实施例提供了一种数据库系统,包括计算节点,所述计算节点包括调度器,所述计算节点配置来执行以下操作:获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者;识别所述多个算子中的所述信息收集者与所述信息订阅者;建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系;获取所述信息收集者收集的执行信息;对所述执行信息进行处理;以及按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,并具备相应的有益效果,在此不再赘述。
依据本申请实施例,数据库的执行引擎可以通过信息收集者算子实时收集执行过程中的执行信息,并将该信息处理后传递至调度器和信息订阅者算子,以进行计划重优化和算子算法自适应选择,可以有效地提升数据库执行SQL语句的效率,更快地查询出满足用户需求的数据。
图5为用来实现本申请实施例的电子设备的框图。如图5所示,该电子设备包括:存储器501和处理器502,存储器501内存储有可在处理器502上运行的计算机程序。处理器502执行该计算机程序时实现上述实施例中的方法。存储器501和处理器502的数量可以为一个或多个。
该电子设备还包括:
通信接口503,用于与外界设备进行通信,进行数据交互传输。
如果存储器501、处理器502和通信接口503独立实现,则存储器501、处理器502和通信接口503可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器501、处理器502及通信接口503集成在一块芯片上,则存储器501、处理器502及通信接口503可以通过内部接口完成相互间的通信。
本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现本申请实施例中提供的方法。
本申请实施例还提供了一种芯片,该芯片包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请实施例提供的方法。
本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请实施例提供的方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机访问存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机访问存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM均可用。例如,静态随机访问存储器(Static RAM,SRAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM)、同步动态随机访问存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机访问存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机访问存储器(Enhanced SDRAM,ESDRAM)、同步链接动态随机访问存储器(Sync link DRAM,SLDRAM)和直接内存总线随机访问存储器(DirectRambus RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生依照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中描述的或在此以其他方式描述的任何过程或方法可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中描述的或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的示例性实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请记载的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种信息传递方法,应用于数据库的执行引擎,所述执行引擎包括调度器,所述信息传递方法包括:
获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者;
识别所述多个算子中的所述信息收集者与所述信息订阅者;
建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系;
获取所述信息收集者收集的执行信息;
对所述执行信息进行处理;以及
按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
2.根据权利要求1所述的方法,其中,所述执行信息包括以下中的至少一项:统计信息、数据特征、资源使用。
3.根据权利要求1或2所述的方法,其中,所述对所述执行信息进行处理,包括:
创建二进制数组;
选取至少一个哈希函数;
通过所述至少一个哈希函数将所述执行信息映射到所述二进制数组中,以生成布隆过滤器。
4.根据权利要求1或2所述的方法,其中,所述对所述执行信息进行处理,包括:
判断所述信息收集者对应的算子是否分布在不同的数据片段上,其中,
如果所述信息收集者对应的算子分布在不同的数据片段上,则将所述执行信息聚合为全局信息。
5.根据权利要求1或2所述的方法,其中,所述按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器,包括:
建立与所述信息订阅者之间的广播通道;以及
通过所述广播通道,将所述处理后的执行信息发送至所述信息订阅者。
6.根据权利要求1或2所述的方法,其中,所述处理后的执行信息是按预定条件的排序。
7.一种信息传递装置,部署于数据库的执行引擎,所述执行引擎包括调度器,所述信息传递装置包括:
算子获得单元,配置来获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者;
算子识别单元,配置来识别所述多个算子中的所述信息收集者与所述信息订阅者;
关系建立单元,配置来建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系;
信息获取单元,配置来获取所述信息收集者收集的执行信息;
信息处理单元,配置来对所述执行信息进行处理;以及
信息发送单元,配置来按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
8.一种数据库系统,包括计算节点,所述计算节点包括调度器,所述计算节点配置来执行以下操作:
获得多个算子,其中,所述多个算子包括信息收集者和信息订阅者;
识别所述多个算子中的所述信息收集者与所述信息订阅者;
建立所述信息订阅者、所述调度器分别与所述信息收集者之间的匹配关系;
获取所述信息收集者收集的执行信息;
对所述执行信息进行处理;以及
按照预定规则将处理后的执行信息发送至与所述信息收集者相匹配的信息订阅者和调度器。
9.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器在执行所述计算机程序时实现权利要求1-6中任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6中任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202310208773.8A CN116186077A (zh) | 2023-02-28 | 2023-02-28 | 信息传递方法、装置、数据库系统、电子设备和存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202310208773.8A CN116186077A (zh) | 2023-02-28 | 2023-02-28 | 信息传递方法、装置、数据库系统、电子设备和存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN116186077A true CN116186077A (zh) | 2023-05-30 |
Family
ID=86452146
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202310208773.8A Pending CN116186077A (zh) | 2023-02-28 | 2023-02-28 | 信息传递方法、装置、数据库系统、电子设备和存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN116186077A (zh) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020010562A1 (en) * | 1999-02-22 | 2002-01-24 | Fisher Rosemount Systems, Inc. | Diagnostics in a process control system |
| US20140280032A1 (en) * | 2013-03-13 | 2014-09-18 | Cloudera, Inc. | Low latency query engine for apache hadoop |
| CN107678790A (zh) * | 2016-07-29 | 2018-02-09 | 华为技术有限公司 | 流计算方法、装置及系统 |
| US20180321975A1 (en) * | 2017-05-04 | 2018-11-08 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a stateless, deterministic scheduler and work discovery system with interruption recovery |
| CN115167994A (zh) * | 2022-06-15 | 2022-10-11 | 阿里云计算有限公司 | 任务处理方法以及装置 |
-
2023
- 2023-02-28 CN CN202310208773.8A patent/CN116186077A/zh active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020010562A1 (en) * | 1999-02-22 | 2002-01-24 | Fisher Rosemount Systems, Inc. | Diagnostics in a process control system |
| US20140280032A1 (en) * | 2013-03-13 | 2014-09-18 | Cloudera, Inc. | Low latency query engine for apache hadoop |
| CN107678790A (zh) * | 2016-07-29 | 2018-02-09 | 华为技术有限公司 | 流计算方法、装置及系统 |
| US20180321975A1 (en) * | 2017-05-04 | 2018-11-08 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a stateless, deterministic scheduler and work discovery system with interruption recovery |
| CN115167994A (zh) * | 2022-06-15 | 2022-10-11 | 阿里云计算有限公司 | 任务处理方法以及装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10831562B2 (en) | Method and system for operating a data center by reducing an amount of data to be processed | |
| CN114528231B (zh) | 一种数据动态存储方法、装置、电子设备及存储介质 | |
| CN110730101B (zh) | 资源分配方法、终端、装置及可读存储介质 | |
| WO2021259217A1 (zh) | 数据的关联查询方法、装置、设备及存储介质 | |
| US11762879B2 (en) | Information traceability method and system based on blockchain | |
| CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
| CN114116908A (zh) | 一种数据管理方法、装置及电子设备 | |
| CN110471935B (zh) | 一种数据操作的执行方法、装置、设备和存储介质 | |
| CN114020854A (zh) | 维度表的数据查询方法、系统、电子装置和存储介质 | |
| CN116501761A (zh) | 查询优化方法、设备及存储介质 | |
| CN115658680A (zh) | 数据存储方法、数据查询方法和相关装置 | |
| CN114138877A (zh) | 基于微服务架构的主题数据服务实现方法、装置及设备 | |
| CN112199401B (zh) | 数据请求处理方法、装置、服务器、系统及存储介质 | |
| CN111159229B (zh) | 一种数据查询方法及装置 | |
| CN116186077A (zh) | 信息传递方法、装置、数据库系统、电子设备和存储介质 | |
| WO2025102679A1 (zh) | 一种数据湖的分桶方法以及装置 | |
| CN110442616B (zh) | 一种针对大数据量的页面访问路径分析方法与系统 | |
| CN115858306A (zh) | 一种基于事件流的微服务监控方法、终端设备及存储介质 | |
| CN111368146A (zh) | 一种路径信息的查询方法及装置、存储介质和处理器 | |
| CN114116188A (zh) | 一种数据存储方法及其设备 | |
| CN116860859B (zh) | 一种多源异构数据的接口创建方法、装置及电子设备 | |
| CN110532253A (zh) | 一种业务分析方法、系统及集群 | |
| CN112311832A (zh) | 一种任务处理方法、系统及节点 | |
| CN118210817A (zh) | 基于样品管存储的样品信息查询方法、设备与介质 | |
| CN119577257A (zh) | 云产品的指标查询方法、装置、设备、存储介质及产品 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination |