CN113792079A - 数据查询方法、装置、计算机设备和存储介质 - Google Patents
数据查询方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113792079A CN113792079A CN202111359992.3A CN202111359992A CN113792079A CN 113792079 A CN113792079 A CN 113792079A CN 202111359992 A CN202111359992 A CN 202111359992A CN 113792079 A CN113792079 A CN 113792079A
- Authority
- CN
- China
- Prior art keywords
- query
- data
- engine
- read
- data record
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F16/24553—Query execution of query operations
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
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据查询方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,出现了数据库技术,数据库服务器可以接收用户发送的查询请求,对查询请求中的查询语句生成查询计划,在执行查询计划时,数据库服务器通常是通过查询引擎读取数据库中的数据记录,并按照已生成的查询计划进行处理。
然而,目前的数据库通常只有一个查询引擎,导致在执行查询时缺乏灵活性。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高执行查询时的灵活性的数据查询方法、装置、计算机设备、存储介质和计算机程序产品。
一种数据查询方法,由数据库服务器执行,所述数据库服务器设置有原生查询引擎和新增查询引擎,所述方法包括:获取待查询的数据组织单元对应的初始查询计划和新增查询计划;所述新增查询计划是基于所述新增查询引擎所要求的数据结构,对所述初始查询计划进行数据结构转换得到的;通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理;若所述数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
一种数据查询装置,所述装置包括:计划获取模块,用于获取待查询的数据组织单元对应的初始查询计划和新增查询计划;所述新增查询计划是基于所述新增查询引擎所要求的数据结构,对所述初始查询计划进行数据结构转换得到的;数据处理模块,用于通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理;引擎切换模块,用于若所述数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取待查询的数据组织单元对应的初始查询计划和新增查询计划;所述新增查询计划是基于所述新增查询引擎所要求的数据结构,对所述初始查询计划进行数据结构转换得到的;通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理;若所述数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取待查询的数据组织单元对应的初始查询计划和新增查询计划;所述新增查询计划是基于所述新增查询引擎所要求的数据结构,对所述初始查询计划进行数据结构转换得到的;通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理;若所述数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:获取待查询的数据组织单元对应的初始查询计划和新增查询计划;所述新增查询计划是基于所述新增查询引擎所要求的数据结构,对所述初始查询计划进行数据结构转换得到的;通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理;若所述数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
上述数据查询方法、装置、计算机设备、存储介质和计算机程序产品,获取待查询的数据组织单元对应的初始查询计划和新增查询计划,其中新增查询计划是基于新增查询引擎所要求的数据结构,对初始查询计划进行数据结构转换得到的,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,若数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理,由于在数据库服务器中增加了新增查询引擎,并且可以根据数据库服务器的当前资源状态自适应地切换查询引擎,提高了数据库服务器在执行查询时的灵活性。
一种数据查询方法,由数据库服务器所包括的存储节点执行,所述数据库服务器还包括计算节点,所述计算节点为原生查询引擎所在的节点,所述存储节点为数据库所在的节点,所述存储节点设置新增查询引擎;所述方法包括:接收计算节点发送的与数据组织单元对应的新增查询计划,所述新增查询计划是由计算节点基于所述新增查询引擎所要求的数据结构,对获取的与所述原生查询引擎对应的初始查询计划进行数据结构转换得到的;通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至所述计算节点;若所述存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至所述计算节点,以使得所述计算节点对返回的后序数据记录进行处理。
一种数据查询装置,所述装置包括:计划接收模块,用于接收计算节点发送的与数据组织单元对应的新增查询计划,所述新增查询计划是由计算节点基于所述新增查询引擎所要求的数据结构,对获取的与所述原生查询引擎对应的初始查询计划进行数据结构转换得到的;数据处理模块,用于通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至所述计算节点;切换模块,用于若所述存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至所述计算节点,以使得所述计算节点对返回的后序数据记录进行处理。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:接收计算节点发送的与数据组织单元对应的新增查询计划,所述新增查询计划是由计算节点基于所述新增查询引擎所要求的数据结构,对获取的与所述原生查询引擎对应的初始查询计划进行数据结构转换得到的;通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至所述计算节点;若所述存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至所述计算节点,以使得所述计算节点对返回的后序数据记录进行处理。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:接收计算节点发送的与数据组织单元对应的新增查询计划,所述新增查询计划是由计算节点基于所述新增查询引擎所要求的数据结构,对获取的与所述原生查询引擎对应的初始查询计划进行数据结构转换得到的;通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至所述计算节点;若所述存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至所述计算节点,以使得所述计算节点对返回的后序数据记录进行处理。
一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:接收计算节点发送的与数据组织单元对应的新增查询计划,所述新增查询计划是由计算节点基于所述新增查询引擎所要求的数据结构,对获取的与所述原生查询引擎对应的初始查询计划进行数据结构转换得到的;通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至所述计算节点;若所述存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至所述计算节点,以使得所述计算节点对返回的后序数据记录进行处理。
上述数据查询方法、装置、计算机设备、存储介质和计算机程序产品,接收计算节点发送的与数据组织单元对应的新增查询计划,该新增查询计划是由计算节点基于新增查询引擎所要求的数据结构,对获取的与原生查询引擎对应的初始查询计划进行数据结构转换得到的,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至计算节点,若存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取数据组织单元中当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至计算节点,以使得计算节点对返回的后序数据记录进行处理,一方面由于在存储节点上设置新增查询引擎,可以通过存储节点计算资源的冗余产生查询执行的收益,另一方面,存储节点自己根据资源情况确定是否调用新增查询引擎来对数据进行处理或者按照原有逻辑直接返回记录由上层计算节点来完成计算处理,从而可以保证得到查询优化处理效果的同时,避免资源使用集中到存储节点,造成整个集群吞吐能力下降的问题。
附图说明
图1为一个实施例中数据查询方法的应用环境图;
图2为一个实施例中数据查询方法的流程示意图;
图3为一个实施例中查询引擎与优化器的关系示意图;
图4为另一个实施例中查询引擎与优化器的关系示意图;
图5为另一个实施例中数据查询方法的流程示意图;
图6为一个实施例中相关技术中的架构示意图;
图7为一个具体的实施例中数据查询方法的流程示意图;
图8为一个实施例中数据查询装置的结构框图;
图9为另一个实施例中数据查询装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如本申请所公开的数据查询方法或装置,其中数据库服务器中的计算节点以及一个或者多个存储节点可组成为一区块链,而计算节点以及存储节点作为为区块链上的节点。
在一个实施例中,本申请实施例提供的数据查询方法,其中数据库中的数据可保存于区块链上。
本申请实施例提供的数据查询方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与数据库服务器104可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。数据库可以存储服务器104需要处理的数据。数据库可以集成在服务器104上,也可以放在云上或其他网络服务器上。数据库服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端、智能电视等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
数据库服务器104在接收到终端102发送的针对数据组织单元的查询请求后,可以通过优化器对查询请求中的查询语句进行解析生成初始查询计划,进一步可以对初始查询计划进行结构转换,得到新增查询计划,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,数据库服务器104可以实时监测自身的资源状态,当监测到当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理,从而实现在查询计划的执行过程中自适应地选择查询引擎进行查询。
其中,数据库服务器104指的是对应部署了数据库的服务器,数据库服务器中包括计算模块和存储模块,计算模块用于实现与查询相关的计算,存储模块用于存储数据。在一个实施例中,数据库服务器为存算分类架构,即数据库服务器的计算模块和存储模块部署在不同机器的不同进程上,其中计算模块所在的机器称为计算节点,存储节点所在的机器称为存储节点,数据库服务器可以包括一个或者多个存储节点,计算节点和存储节点可以通过有线或者无线网络进行通信。例如,在TDSQL数据库中,计算节点用来处理用户特定计算请求,并主要负责执行用户请求的,计算节点在TDSQL V30中称为SQLEngine,主要处理查询请求,存储节点用来存储数据,并完成分布式事务执行与提交的节点,在TDSQL V30中被称为TDStore。在另一个实施例中,数据库服务器的计算模块和数据(存储模块)可以在一个机器的一个进程里面完成功能。
在一个实施例中,如图2所示,提供了一种数据查询方法,以该方法应用于图1中的数据库服务器为例进行说明,包括以下步骤:
步骤202,获取待查询的数据组织单元对应的初始查询计划和新增查询计划;新增查询计划是基于新增查询引擎所要求的数据结构,对初始查询计划进行数据结构转换得到的。
其中,待查询的数据组织单元指的是需要进行查询的数据组织单元。数据组织单元可以是一个或者多个。数据组织单元指的是数据库中用于组织数据的单元,例如数据组织单元可以是SQL型数据库中的数据表,又如数据组织单元还可以是noSQL型数据库中的日志。
数据组织单元根据用户的查询请求进行确定。用户的查询请求中携带查询语句,数据组织单元具体可以根据查询语句进行确定。查询语句例如可以是SQL语句(StructuredQuery Language,结构化查询语言)。查询语句是一种描述性语言,用于指示数据库服务器需要数据完成什么样的功能,但是如何完成该查询语句目标,则需要数据库服务器自己来找寻最优的方式来完成这个数据处理的需求,数据库服务器为完成查询语句目标所制定的一组执行步骤称为查询计划。生成查询计划的组件,在数据库服务器中被称为优化器。在优化器将用户的查询语句的语义分解出来以后,会对于每一条查询语句生成一条查询计划,按照这个查询计划处理完成所有待处理的数据之后就能够得到用户期待的结果,数据库服务器用来执行这个查询计划的组件被称为查询引擎。
在一个实施例中,查询计划中包括多个查询计划单元,查询计划单元为查询计划中最小的数据操作单元。在以迭代器模型作为查询执行模型的数据库例如MySQL中,由于迭代器模型是通过将查询执行中对于每一个表的处理都按照优化器确定的顺序排列,以迭代器的模式,逐表地处理对应的记录来执行查询,因此,查询计划单元为表处理;在以火山模型作为查询执行模型的数据库例如PostgreSQL中,由于火山模型是将查询计划设计为一棵树的样子,从上往下下发指令,然后数据从叶子结点,向上返回,到达根节点,因此查询计划单元为算子。对表处理进行封装可以得到算子。算子定义了对哪些数据,需要进行什么样的操作(例如扫描,联结,聚集,排序等等算子)。查询计划可以使用一系列算子按一定的顺序组合在一起,查询引擎按照这个顺序执行后,即可以认为查询执行完成。
数据库服务器设置有原生查询引擎和新增查询引擎,其中,原生查询引擎指的是现有的数据库中原生的查询引擎,新增查询引擎为本申请实施例提供的数据查询方法新增设的查询引擎。新增查询引擎的查询性能优于原生查询引擎。这里的查询性能具体可以是查询效率,例如,新增查询引擎可以支持调用的线程多于原生查询引擎。原生查询引擎对应的查询计划称为初始查询计划,新增查询引擎对应的查询计划称为新增查询计划。由于查询方式的不同,初始查询计划和新增查询计划的数据结构不相同。数据结构是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的集合。
如图3所示,为一个实施例中,查询引擎与优化器的关系示意图。在该实施例中,数据库服务器的计算模块和数据(存储模块)在一个机器的一个进程里面完成功能。参考图3,原生查询引擎对应的优化器生成查询计划后,可以由新增查询引擎对应的优化器进行结构转换得到新增查询计划,新增查询引擎和原生查询引擎可以封装为一个查询引擎,该查询引擎根据资源可以根据查询执行时资源情况(CPU,内存,网络带宽等等)的空闲情况,决定使用那种模式。由于新增查询引擎的查询性能优于原生查询引擎,在资源充分的情况下,尽量采用新查询引擎执行查询,当资源不足时,回退到原查询引擎模式。
具体地,数据库服务器在接收到用户的查询请求后,解析查询请求获得查询语句,根据查询语句确定数据组织单元,并且通过优化器对查询语句生成对应的初始查询计划,由于新增查询引擎所要求的数据结构和原生查询引擎并不相同,数据库服务器进一步可以对初始查询计划进行数据结构转换,得到符合新增查询引擎数据结构要求的新增查询计划。
在一个实施例中,数据库服务器在获取到数据组织单元对应的初始查询计划和新增查询计划,需要初始化查询计划同时初始化自适应查询计划,这里的初始化可以理解为,当查询计划需要被查询引擎执行的时候,需要为查询计划中的结构真正分配内存和初始化数据结构初始值。
在一个实施例中,在新增查询引擎的研发迭代过程中,对于获取的初始查询计划,新增查询引擎可能只支持部分的查询计划单元,则数据库服务器在进行数据结构转换时,只需要对新增查询引擎所支持的查询计划单元进行数据结构转换即可,进行数据结构转换后,对于该查询计划单元即存在对应的新增查询计划。在一个实施例中,数据库服务器可以将该查询计划单元对应的新增查询计划进行封装并嵌入至初始查询计划中,此时初始查询计划和新增查询计划作为一个整体,数据库服务器可以同时获取到初始查询计划和新增查询计划。在其他实施例中,由于新增查询计划是对初始查询计划中的查询计划单元进行数据结构转换得到的,查询计划单元与其对应的新增查询计划对应的数据操作是相同的,那么可以建立查询计划单元与其对应的新增查询计划之间的对应关系,在获取到初始查询计划后,基于对应关系获取对应的新增查询计划。
步骤204,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理。
其中,数据记录指的是数据组织单元中用于组织数据的子单元,例如,数据记录可以是数据表中的一行数据。
具体地,数据库服务器通过新增查询引擎读取数据组织单元中的一个或者多个数据记录,进而新增查询引擎可以按照新增查询计划对读取的数据记录进行处理,处理完成后,重复该步骤,即读取上一次读取的记录的后序记录,并按照新增查询计划对读取的数据记录进行处理。其中,多个指至少两个。
在一个实施例中,新增查询引擎对数据记录进行处理,例如可以是条件过滤,从记录中取出所需字段,聚集函数计算,向量化,并行等等中的任意一种。
在一个实施例中,当新增查询引擎只支持初始查询计划中的部分查询计划单元时,则当存在与目标查询计划单元对应的新增查询计划时,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理;当不存在与目标查询计划单元对应的新增查询计划时,通过原生查询引擎读取数据组织单元中的数据记录,并按照目标查询计划单元对读取的数据记录进行处理。
在一个实施例中,数据库服务器可以获取当前资源状态,当数据库服务器对应的当前资源状态满足新增查询引擎对应的运行条件时,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,当数据库服务器对应的当前资源状态不满足新增查询引擎对应的运行条件时,通过原生查询引擎读取数据组织单元中的数据记录,并按照原生查询计划对读取的数据记录进行处理。
步骤206,若数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
其中,当前读取的数据记录指的是新增查询引擎最新读取的数据记录。当前读取的数据记录对应的后序数据记录指的是数据组织单元中排序在当前读取的数据记录之后的数据记录。原生查询引擎读取的后序数据记录可以是一个或者多个,即原生查询引擎可以一次读取一个或者多个后序数据记录。在数据组织单元中,数据记录按照从上至下的顺序进行升序排列,从而排序在当前读取的数据记录之后的数据记录可以是在当前读取的数据记录之下的数据记录。
在一个实施例中,为保证数据组织单元中的数据能够全部被查询到,当前读取的数据记录对应的后序数据记录可以是与当前读取的数据记录的排序序号相连的数据记录。例如当前读取的数据记录为数据组织单元中第10行的数据,则原生查询引擎读取的后序数据记录可以是第11行的数据,或者以第11行的数据作为起始的连续多行数据。
资源状态用于表征资源的使用情况,其中资源包括但不限于CPU(centralprocessing unit,中央处理器)、内存、IO(Input/Output)、网络带宽等等。引擎切换条件指的是预先定义的对查询引擎进行切换的条件,当数据库服务器的当前资源状态满足引擎切换条件时,说明数据库服务器的当前资源紧张,将新增查询引擎切换至原生引擎后可以节省数据库服务器的资源。例如,新增查询引擎在执行查询时调用的线程数多于原生查询引擎,则切换至原生查询引擎,可以释放掉一些线程资源。其中数据库服务器的资源紧张可以是数据库的CPU(central processing unit,中央处理器)、内存、IO(Input/Output)、网络带宽等等资源中至少一项资源的可用数值小于预设阈值。
在一个实施例中,当前资源状态满足引擎切换条件可以是数据库服务器的整体资源的资源状态满足引擎切换条件,即数据库服务器的整体可用资源紧张。在另一个实施例中,数据组织单元为目标查询任务对应于目标查询任务,可以为目标查询任务预先分配资源额度,则当前资源状态满足引擎切换条件可以是预先分配的资源额度满足引擎切换条件,即目标查询任务对应的可用资源紧张。
具体地,数据库服务器在通过新增查询引擎执行新增查询计划的过程中,可以监测数据库服务器的资源状态,当检测到数据库服务器的当前资源状态满足引擎切换条件,则可以在当前读取的数据记录处理完成后,停止运行新增查询引擎,以释放新增查询引擎所占用的资源,并通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,对读取的后序数据记录按照初始查询计划进行处理。由于对资源状态进行了监测,并且当前读取的数据记录处理完成后即可进行引擎切换,实现了记录级别的引擎切换。
在一个实施例中,数据库服务器可以每隔预设时间间隔监测资源状态,例如,每隔两秒监测一次资源状态。在另一个实施例中,数据库服务器可以在新增查询引擎每读取一次数据记录时,监测一次资源状态。可以理解的是,新增查询引擎可以一次读取一个或多个数据记录。
在一个实施例中,当新增查询引擎调用多个执行线程读取并处理数据记录时,若数据库服务器的当前资源状态紧张,则数据库服务器可以先减少执行线程数量,并尝试继续读取数据记录进行处理,若数据库服务器的当前资源状态仍然紧张,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录。
在一个实施例中,在切换为原生查询引擎执行后,数据库服务器可以继续监测自身的资源状态,若是后续监测到资源紧张情况得到缓解,可以支持新增查询引擎的运行条件了,则在当前读取的数据记录处理完成后,可以切换回新增查询引擎继续进行处理。
上述数据查询方法中,获取待查询的数据组织单元对应的初始查询计划和新增查询计划,其中新增查询计划是基于新增查询引擎所要求的数据结构,对初始查询计划进行数据结构转换得到的,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,若数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理,由于在数据库服务器中增加了新增查询引擎,并且可以根据数据库服务器的当前资源状态自适应地切换查询引擎,提高了数据库服务器在执行查询时的灵活性。
进一步,由于在记录级别上切换,可以在第一时间感应到资源紧张,并可以对与已经在执行的中的查询进行切换,快速释放紧张资源,避免资源使用状况进一步恶化。
在一个实施例中,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,包括:获取数据库服务器对应的当前资源状态;当数据库服务器对应的当前资源状态满足新增查询引擎对应的运行条件时,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理;当数据库服务器对应的当前资源状态不满足新增查询引擎对应的运行条件时,通过原生查询引擎读取数据组织单元中的数据记录,并按照原生查询计划对读取的数据记录进行处理。
其中,新增查询引擎对应的运行条件指的是新增查询引擎运行所需的资源条件。新增查询引擎通过调用多个执行线程执行查询任务,可以以更高的效率执行查询。
具体地,数据库服务器在一开始选择查询引擎时,即在启动对数据组织单元的处理时,可以获取数据库服务器对应的当前资源状态,判断当前资源状态是否满足新增查询引擎对应的运行条件,当数据库服务器对应的当前资源状态满足新增查询引擎对应的运行条件时,表示当前资源支持运行新增查询引擎,为提高查询执行效率,数据库服务器可以通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理;当数据库服务器对应的当前资源状态不满足新增查询引擎对应的运行条件时,表示当前资源不支持运行新增查询引擎,由于原生查询引擎为数据库服务器的原始引擎,通过单线程执行查询,为节省资源,数据库服务器可以通过原生查询引擎读取数据组织单元中的数据记录,并按照原生查询计划对读取的数据记录进行处理。
上述实施例中,服务器可以获取数据库服务器对应的当前资源状态,根据资源状态选择查询引擎,避免资源使用情况恶化。
在一个实施例中,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,包括:根据数据库服务器对应的当前资源状态,确定新增查询引擎所调用的执行线程数量,得到目标数量;通过新增查询引擎调用目标数量的执行线程读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理。
具体地,数据库服务器在获取到当前资源状态后,根据当前资源状态确定当前可用的CPU资源,并确定每一条执行线程所需的CPU资源,基于当前可用的CPU资源和每一条执行线程所需的CPU资源得到当前最多可运行的执行线程的数量,即为目标数量。例如,假设当前可用的CPU资源为26,每一条执行线程所需的CPU资源为3,当前最多可运行的执行线程的数量为8,则得到目标数量为8。
进一步,数据库服务器通过新增查询引擎调用目标数量的执行线程并行执行查询,每一条执行线程分别读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理。
上述实施例中,数据库服务器在获取到当前资源状态,可以根据资源状态确定执行线程的数量,从而最大限度的利用当前资源,最大程度地提高查询效率。
在一个实施例中,初始查询计划包括多个查询计划单元;方法还包括:从多个查询计划单元中确定新增查询引擎所支持的目标查询计划单元;按照新增查询引擎所要求的数据结构对目标查询计划单元进行数据结构转换,得到目标查询计划单元对应的新增查询计划;通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理包括:当存在与目标查询计划单元对应的新增查询计划时,通过新增查询引擎读取数据组织单元中的数据记录,并按照目标查询计划单元对应的新增查询计划对读取的数据记录进行处理;当不存在与目标查询计划单元对应的新增查询计划时,通过原生查询引擎读取数据组织单元中的数据记录,并按照目标查询计划单元对读取的数据记录进行处理。
其中,新增查询引擎所支持的目标查询计划单元指的是该目标查询计划单元所对应的数据操作新增查询引擎能够支持。本申请实施例中,考虑到新增查询引擎在研发迭代的过程中,对数据操作是逐步支持的,那么在前期的迭代版本,新增查询引擎可能并不支持所有的数据操作,从而对于获取的初始查询计划中的多个查询计划单元,新增查询引擎可能只支持其中一部分的查询计划单元,为了能够方便的利用到新增查询引擎实现的查询处理优化算法带来的查询执行性能的提升,新增查询计划可以以查询计划单元为单位嵌入到初始查询计划中,独立提升这一部分查询计划的查询执行性能。
具体地,数据库服务器在获取到初始查询计划后,遍历初始查询计划中的各个查询计划单元,将查询计划单元所对应的数据操作类型与新增查询引擎已支持的数据操作类型进行匹配,将匹配成功的查询计划单元中确定新增查询引擎所支持的目标查询计划单元,按照新增查询引擎所要求的数据结构对目标查询计划单元进行数据结构转换,得到目标查询计划单元对应的新增查询计划,在执行查询计划的过程中,数据库服务器在调用原生查询引擎依次执行各个查询计划单元的过程中,若数据库服务器检测到某个目标查询计划单元存在对应的新增查询计划时,则通过新增查询引擎读取数据组织单元中的数据记录,并按照目标查询计划单元对应的新增查询计划对读取的数据记录进行处理,当不存在与目标查询计划单元对应的新增查询计划时,通过原生查询引擎读取数据组织单元中的数据记录,并按照目标查询计划单元对读取的数据记录进行处理。
上述实施例中,由于新增查询计划可以以查询执行单元为单位嵌入到初始查询计划中,独立提升该部分计划的查询执行性能,因此可以以最大程度,最快速度的提升查询执行的性能。
在一个实施例中,数据库服务器包括存储节点和计算节点,计算节点为原生查询引擎所在的节点,存储节点为数据库所在的节点,存储节点设置新增查询引擎;获取待查询的数据组织单元对应的初始查询计划和新增查询计划,包括:计算节点获取待查询的数据组织单元对应的初始查询计划和新增查询计划,将新增查询计划发送至存储节点;通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,包括:存储节点通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理。
本实施例中,在存储节点设置新增查询引擎,具体可以是将新增查询引擎打包下沉到存储节点,新增查询引擎可以是存储节点进程中运行的库程序,也可以是一个独立的进程,通常为了减少数据传输成本,可以将新增查询引擎,作为一个动态库加载到存储节点当中。
由于存储节点设置新增查询引擎,可以在离数据存储最近的地方对数据进行处理(扫描,投影,聚集,排序等),来减少数据处理的整体搬运开销。具体地,计算节点在获取待查询的数据组织单元对应的初始查询计划和新增查询计划后,可以将新增查询计划发送至存储节点,计算节点过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,得到处理结果,将处理结果返回至计算节点。
在一个实施例中,在通过新引擎读取并处理数据的过程中,存储节点可以监测自身的资源状态,基于自身的资源状态自适应地进行引擎切换。
上述实施例中,由于在存储节点设置了新增查询引擎,因此这里计算资源的消耗,从原来的都在计算节点的某一个进程中,拆分为两部分,有一部分被下沉到存储节点中,从而可以通过存储节点计算资源的冗余产生查询执行的收益。
在一个实施例中,存储节点还设置有原生查询引擎;若数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理,包括:存储节点监测自身的资源状态,当监测到自身的资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,存储节点切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
本实施例中,考虑到将新增查询引擎下沉到存储节点后,会对存储节点造成资源使用的压力,存储节点除了设置新增查询引擎外,还可以设置原生查询引擎,具体可以将原生查询引擎打包下沉到存储节点,原生查询引擎可以是存储节点进程中运行的库程序,也可以是一个独立的进程,还可以将新增查询引擎,作为一个动态库加载到存储节点当中。由于存储节点设置了原生查询引擎,那么若是存储节点监测到自身的资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,停止运行新增查询引擎,以释放新增查询引擎所占用的资源,并通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,对读取的后序数据记录按照初始查询计划进行处理,将得到的处理结果返回至计算节点。
在一个实施例中,在切换为原生查询引擎执行后,存储节点可以继续监测自身的资源状态,若是后续监测到资源紧张情况得到缓解,可以支持新增查询引擎的运行条件了,则在当前读取的数据记录处理完成后,可以切换回新增查询引擎继续进行处理。
在一个实施例中,若数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理,包括:存储节点监测自身的资源状态,当监测到自身的资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,存储节点从数据组织单元中读取当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回计算节点;计算节点通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
本实施例中,存储节点仅设置了新增查询引擎,存储节点在通过新增查询引擎读取并处理数据的过程中,对自身的资源状态进行监测,若监测到自身的资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,停止运行新增查询引擎,以释放新增查询引擎所占用的资源,对于当前读取的数据记录对应的后序数据记录不再进行处理,直接返回至计算节点,对于接收到的后序数据记录,计算节点可以通过原生查询引擎进行读取,并按照初始查询计划对读取的后序数据记录进行处理。
上述实施例中,存储节点可以根据自身的资源情况确定是否调用新增查询引擎来对数据进行处理或者按照原有逻辑直接返回数据记录由上层计算节点来完成计算处理,从而可以保证得到查询优化处理效果的同时,避免资源使用集中到存储节点,造成整个集群吞吐能力下降的问题。
在一个实施例中,计算节点设置有新增查询引擎,计算节点通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理,包括:当计算节点的当前资源状态满足新增查询引擎对应的运行条件时,计算节点通过新增查询引擎读取后序数据记录,并按照新增查询计划对读取的后序数据记录进行处理;当计算节点的当前资源状态不满足新增查询引擎对应的运行条件时,计算节点通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
具体地,计算节点可以获取当前资源状态,判断资源状态是否满足新增查询引擎对应的运行条件,若是,则计算节点通过新增查询引擎读取后序数据记录,并按照新增查询计划对读取的后序数据记录进行处理,若否,则计算节点通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
上述实施例中,通过在计算节点设置新增查询引擎,计算节点在接收到存储节点返回的数据记录时,可以根据资源状态自适应地选择查询引擎,在资源充分的情况下,尽量采用新增查询引擎执行查询,当资源不足时,回退到原生查询引擎模式,提高查询执行的灵活性。
在一个实施例中,存储节点通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,包括:存储节点通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,将得到的处理结果写入第一消息字段,将第一消息字段返回计算节点;存储节点从数据组织单元中读取当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回计算节点,包括:存储节点从数据组织单元中读取当前读取的数据记录对应的后序数据记录,将读取的后序数据记录写入第二消息字段,将第二消息字段返回计算节点。
其中,消息字段指的是存储节点在响应计算节点返回消息时,在消息中携带的字段。第一消息字段用于存放存储节点已经处理的数据,第二消息字段用于存放未处理的数据,即原始数据。
本实施例中,存储节点根据是否采用了新增查询引擎进行数据处理来决定返回的数据放在哪个消息字段,具体来说,从数据库中直接读取的数据记录,存放在第二消息字段中,存储节点将会根据自己实际处理记录的情况来决定,那些记录会按照原来的流程被放在这个字段中返回;新增查询引擎处理后的中间结果记录,存放在第一消息字段中,由存储节点根据自己实际处理记录时,确定是否记录已经被新增查询引擎处理完成,若是已经被新增查询引擎处理,则将处理结果通过第二消息字段返回。
上述实施例中,通过设置第一消息字段和第二消息字段,存储引擎根据数据记录的实际情况,决定用哪个字段返回数据,可以实现记录级别的在原查询引擎和新查询引擎间的无缝切换。
在一个实施例中,计算节点通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理,包括:当接收到第一消息字段时,计算节点读取第一消息字段中的处理结果,并跳过对处理结果所对应的数据记录的处理;当接收到第二消息字段时,计算节点通过原生查询引擎读取第二消息字段中的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
具体地,存储节点可以积累一批数据进行返回,计算节点根据两个返回字段中是否有记录来决定如何处理,若是第二消息字段空,第一消息字段有数据,表明当前返回记录都已经通过新增查询引擎在存储节点处理完毕,可以跳过计算节点中对应的记录处理部分操作;若第二消息字段有数据,第一消息字段空,则表明当前返回记录都未经过新查询引擎处理过,需要按照原生查询引擎流程,完成对这一批记录的处理;若是第二消息字段和第一消息字段都有数据,这两部分记录不会重叠,表明这批返回的记录有一部分已经通过新增查询引擎在存储节点已经处理完毕,另外一部分记录,依然需要计算节点完成对应的处理步骤。
上述实施例中,通过设置第一消息字段和第二消息字段来区分不同的返回数据,计算节点根据两个返回字段中是否有记录来决定如何处理,可以实现记录级别的在原查询引擎和新查询引擎间的无缝切换,避免出现重复处理或者错误处理的情况。
如图4所示,为一个实施例中,查询引擎与优化器的关系示意图。在该实施例中,数据库服务器为存算分类架构。参考图4,计算节点中,原生查询引擎对应的优化器生成查询计划后,可以由新增查询引擎对应的优化器进行结构转换得到新增查询计划,新增查询引擎和原生查询引擎可以封装为一个查询引擎,该查询引擎根据资源可以根据查询执行时资源情况(CPU,内存,网络带宽等等)的空闲情况,决定使用那种模式。存储节点中,增加了新增查询引擎,存储节点根据资源充分情况,决定是否采用新查询引擎,若是,则先通过新增查询引擎完成相应的处理后,由新引擎模块指导存储节点返回处理结果记录集到上层计算节点;若否,存储节点按照原数据访问逻辑,返回记录到上层计算节点继续处理。
在一个实施例中,数据组织单元为目标查询任务对应于目标查询任务;方法还包括:接收资源配置请求;资源配置请求中携带目标查询任务对应的资源分配信息;为目标查询任务分配与资源分配信息对应的目标资源额度;当新增查询引擎所占用的资源超出目标资源额度时,判定数据库服务器对应的当前资源状态满足引擎切换条件。
其中,目标查询任务为CPU密集型查询任务,为避免该类任务对其他类查询任务的响应速度造成影响,可对该类任务进行资源配置,数据库服务器在接收到携带目标查询任务对应的资源分配信息的资源配置请求后,为目标查询任务分配与资源分配信息对应的目标资源。资源分配信息用于表征资源分配的具体比例,例如可以分配数据库服务器中20%的资源给目标查询任务,那么假设数据库服务器的CPU为32核,则分配给目标查询任务的约为6核。
由于对目标查询任务分配了资源额度,那么对于目标查询任务,数据库服务器在通过新增查询引擎执行目标查询任务对应的查询时,可以判断新增查询引擎所占用的资源超出目标资源额度时,若是,则判定数据库服务器对应的当前资源状态满足引擎切换条件。
在一个具体的实施例中,目标查询任务为在线分析系统(OnLine AnalyticalProcessing,OLAP,以下简称AP)类的查询请求任务(以下简称AP任务),专门处理需要对海量的用户数据进行复杂的计算的查询,即分析决策类查询,这个负载特点是查询并发度要求不高,但是对于数据处理的总量和复杂度比较高,属于CPU密集型查询,同时也需要数据库能够以最快的速度完成查询。而数据库服务器更多情况下处理的是在线交易处理(OnLine Transaction Processing,OLTP,以下简称TP)类的查询请求任务(以下简称TP任务),这类任务主要处理用户对于数据的增,删,改的修改用户数据的事务为主,负载特点通常是事务中查询执行时间短,对于事务并发吞吐量有一定要求,对于相应时延要求也要求比较高。本实施例允许用户针对上述资源在整个数据库系统,对于TP类任务和AP类任务进行资源配置,确保某一类负载能够有足够的资源,以下对CPU资源和内存资源在配置过程中参数进行介绍:
1、CPU_RESERVED_FOR_TPWORKLOAD = 0.8 * 总的CPU核数,代表整个数据库80%的计算资源供TP负载使用,通常这个参数以每一个进程可用的CPU资源为一个分配单位来考虑。
例如在TDSQL V3.0中,因为存算分离架构,也可以将这个参数分为计算节点和存储节点两个参数独立的控制计算节点和存储节点各种负载CPU资源的使用情况,例如:CPU_RESERVED_FOR_TPWORKLOAD_SQL, CPU_RESERVED_FOR_TPWORKLOAD_STORE,举例说明:假设一个计算节点可以使用32核的CPU资源,存储节点可以使用64核的计算资源,上述cpu资源TP在计算节点和存储节点的CPU分配数为32*0.8≈26,64*0.8≈51,AP负载可用的cpu资源考虑到其他一些后台线程的开销,应该小于剩下的20%cpu可用数,具体可以根据实际情况进行设定。
2、MEM_RESERVED_FOR_TPWORKLOAD = 0.8 * 节点能够使用的总内存,其中节点能够使用的总内存通常在计算节点和存储节点都会配置一个进程内存可用数量。这样TP将会使用80%的计算节点和存储节点可见的内存,同样AP负载可用的内存也应该小于剩下的20%内存可用数。
上述实施例中,通过对目标查询任务的资源额度进行配置,可以最大程度的在数据库运行实时对于查询执行进行自动调整。
在一个实施例中,上述方法还包括:在通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理的过程中,若数据库服务器的当前资源状态满足新增查询引擎的运行条件,则在当前读取的后序数据记录处理完成后,重新切换为通过新增查询引擎读取数据组织单元中当前读取的后序数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
本实施例中,在通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理的过程中,数据库服务器可以继续监测资源状态,当监测到当前资源状态满足新增查询引擎的运行条件,可以再次切换回新增查询引擎,即在当前读取的后序数据记录处理完成后,停止运行原生查询引擎,重新通过新增查询引擎读取数据组织单元中当前读取的后序数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
上述实施例中,可以根据资源状态再次选择查询引擎,进一步提高了查询执行的灵活性。
在一个实施例中,如图5所示,提供了一种数据查询方法,由数据库服务器所包括的存储节点执行,数据库服务器还包括计算节点,计算节点为原生查询引擎所在的节点,存储节点为数据库所在的节点,存储节点设置新增查询引擎;该方法包括以下步骤:
步骤502,接收计算节点发送的与数据组织单元对应的新增查询计划,新增查询计划是由计算节点基于新增查询引擎所要求的数据结构,对获取的与原生查询引擎对应的初始查询计划进行数据结构转换得到的。
其中,原生查询引擎指的是现有的数据库中原生的查询引擎,新增查询引擎为本申请实施例提供的数据查询方法新增设的查询引擎。新增查询引擎的查询性能优于原生查询引擎。这里的查询性能具体可以是查询效率,例如,新增查询引擎可以支持调用的线程多于原生查询引擎。原生查询引擎对应的查询计划称为初始查询计划,新增查询引擎对应的查询计划称为新增查询计划。由于查询方式的不同,初始查询计划和新增查询计划的数据结构不相同。
具体地,存储节点接收计算节点发送的与数据组织单元对应的新增查询计划,该新增查询计划是由计算节点基于新增查询引擎所要求的数据结构,对获取的与原生查询引擎对应的初始查询计划进行数据结构转换得到的,存储节点进而可以基于该新增查询计划调用新增查询引擎执行查询。
步骤504,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至计算节点。
具体地,存储节点通过新增查询引擎读取数据组织单元中的一个或者多个数据记录,进而新增查询引擎可以按照新增查询计划对读取的数据记录进行处理,处理完成后,重复该步骤,即读取上一次读取的记录的后序记录,并按照新增查询计划对读取的数据记录进行处理。
在一个实施例中,新增查询引擎对数据记录进行处理,例如可以是条件过滤,从记录中取出所需字段,聚集函数计算,向量化,并行等等中的任意一种。
在一个实施例中,存储节点也可以设置原生查询引擎,存储节点可以获取当前资源状态,当存储节点对应的当前资源状态满足新增查询引擎对应的运行条件时,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,当存储节点对应的当前资源状态不满足新增查询引擎对应的运行条件时,通过原生查询引擎读取数据组织单元中的数据记录,并按照原生查询计划对读取的数据记录进行处理。
步骤506,若存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取数据组织单元中当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至计算节点,以使得计算节点对返回的后序数据记录进行处理。
其中,当前读取的数据记录指的是新增查询引擎最新读取的数据记录。当前读取的数据记录对应的后序数据记录指的是数据组织单元中排序在当前读取的数据记录之后的数据记录。在数据组织单元中,数据记录按照从上至下的顺序进行升序排列,从而排序在当前读取的数据记录之后的数据记录可以是在当前读取的数据记录之下的数据记录。在一个实施例中,为保证数据组织单元中的数据能够全部被查询到,当前读取的数据记录对应的后序数据记录可以是与当前读取的数据记录的排序序号相连的数据记录。资源状态用于表征资源的使用情况,其中资源包括但不限于CPU(central processing unit,中央处理器)、内存、IO(Input/Output)、网络带宽等等。引擎切换条件指的是预先定义的对查询引擎进行切换的条件,当存储节点的资源状态满足引擎切换条件时,说明存储节点的资源紧张,将新增查询引擎切换至原生引擎后可以节省存储节点的资源。例如,新增查询引擎在执行查询时调用的线程数多于原生查询引擎,则切换至原生查询引擎,可以释放掉一些线程资源。其中存储节点的资源紧张可以是数据库的CPU(central processing unit,中央处理器)、内存、IO(Input/Output)、网络带宽等等资源中至少一项资源的可用数值小于预设阈值。
具体地,存储节点在通过新增查询引擎执行新增查询计划的过程中,可以监测存储节点的资源状态,当检测到存储节点的当前资源状态满足引擎切换条件,则可以在当前读取的数据记录处理完成后,停止运行新增查询引擎,以释放新增查询引擎所占用的资源,直接从数据组织单元中当前读取的数据记录对应的后序数据记录,对这些数据不再进行处理,直接返回至计算节点,以使得计算节点对返回的后序数据记录进行处理。
在一个实施例中,存储节点可以每隔预设时间间隔监测资源状态,例如,每隔两秒监测一次资源状态。在另一个实施例中,存储节点可以在新增查询引擎每读取一次数据记录时,监测一次资源状态。可以理解的是,新增查询引擎可以一次读取一个或多个数据记录。多个指的是至少两个。
需要说明的是,本申请实施例中,数据库服务器包括的存储节点可以是多个,本申请实施例中,以其中一个存储节点作为示例进行说明,其他存储节点的查询实现与该存储节点类似。
上述数据查询方法,接收计算节点发送的与数据组织单元对应的新增查询计划,该新增查询计划是由计算节点基于新增查询引擎所要求的数据结构,对获取的与原生查询引擎对应的初始查询计划进行数据结构转换得到的,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至计算节点,若存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取数据组织单元中当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至计算节点,以使得计算节点对返回的后序数据记录进行处理,一方面由于在存储节点上设置新增查询引擎,可以通过存储节点计算资源的冗余产生查询执行的收益,另一方面,存储节点自己根据资源情况确定是否调用新增查询引擎来对数据进行处理或者按照原有逻辑直接返回记录由上层计算节点来完成计算处理,从而可以保证得到查询优化处理效果的同时,避免资源使用集中到存储节点,造成整个集群吞吐能力下降的问题。
在一个实施例中,计算节点设置有新增查询引擎,计算节点用于执行以下步骤:通过新增查询引擎读取返回的后序数据记录,并按照新增查询计划对读取的后序数据记录进行处理;若监测到当前资源状态满足引擎切换条件,则在当前读取的后序数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的后序数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
本申请还提供一种应用场景,该应用场景应用上述的数据查询方法。具体地,在该应用场景,用户期望能够数据库服务器既能够很好的处理TP负载,又能够很好的处理AP负载,而通过对于TP负载,和AP负载对于数据库资源使用要求,以及优化器,查询引擎的优化方向的分析可以发现,在某种程度上这两类负载在上述方面的要求与优化方式可能是存在冲突的。
相关技术中,如图6所示,通过重新部署OLAP服务器,使用数据仓库,每天从TP对应的数据库(即图6中的大库)中将数据抽到OLAP服务器,在TP对应的数据库上进行TP类的查询操作,在OLAP服务器的数据库上进行分析类查询的操作。这种方式,通过使用数据仓库,可以将用户不同业务系统数据整合到一起。但是必须定期通过ETL(Extract-Transform-Load)工具将用户实时业务数据抽取到数据仓库中,才能对数据仓库中的数据进行分析,并且需要额外提供一套不小于用户原有业务使用各类硬件资源总和的资源,导致资源的浪费。
针对上述相关技术中的问题,本方案通过增加新的查询引擎,该新增查询引擎能够和现有的优化器,查询引擎紧密结合,对于查询计划的执行可以更细粒度到表中记录级别的适配,查询引擎的处理在原生查询引擎和新增查询引擎的切换达到记录级别的执行粒度切换。
如图7所示,为该应用场景下查询执行的流程图示意图,其中,在计算节点,原生执行引擎和新增执行引擎(以下简称新引擎)封装为一个执行引擎模块,参考图7,具体包括以下步骤:
1、检查查询计划步骤,这一步将遍历由原生优化器生成的查询计划。
2、查询是否有可以使用新查询引擎执行的查询计划的部分。
3、针对可以使用新引擎查询计划部分增加相应的新引擎的查询计划数据结构,生成新增查询计划。
4、初始化查询计划同时初始化新增查询计划,这里的初始化可以理解为,当查询计划需要被查询引擎执行的时候,需要为查询计划中的结构真正分配内存和初始化数据结构初始值。
5、开始执行计划,这个属于原生流程,当前主流数据库使用的查询计划可以认为是MySQL这种的迭代器模型和PostgreSQL的火山模型,此处以MySQL的迭代器执行模型为原型来进行描述,新引擎适配的查询计划以数据表为最小查询适配单位。关于PostgreSQL这种火山模型,只需要将新引擎支持的功能适配到其查询计划的各个算子中即可,运行到本算子时决定是否使用新引擎功能即可。
6、开始查询计划中的第一张表的处理。
7、为第一张表启动一个迭代器,用来进行数据访问,如果是存算分离的结构则进入21步。
8、判断是否使用新引擎功能处理数据,
1)、否,按照原生查询引擎执行查询,执行第9步。
2)、是,执行新引擎处理数据模式,执行第10步。
9、读取一条记录。
10、新引擎读入数据,这里新引擎可以根据支持的情况选择一次读取一条记录,或者一次读取一批记录。
11、处理记录,这里MySQL 原生处理逻辑通常是进行条件过滤(查询中给出的查询条件),然后从记录中取出后续查询需要的字段。
12、新引擎处理逻辑,这里可以是条件过滤,从记录中取出所需字段,聚集函数计算,向量化,并行等等。
13、当前记录是否符合条件,需要说明的是该步骤中对于新引擎处理不完全一样,新引擎通常在12步处理的过程中已经过滤掉了不满足条件的记录。
1)、否,读入下一批数据,转到第7步;
2)、是,进入第14步。
14、是否还有表需要进行连接:
1)、否,进入17步;
2)、是,进入15步。
15、是不是连接中的最后一张表;
1)、否,进入第16步;
2)、是,进入第17步。
16、开始下一张表的处理,进入第7步。
17、临时存储结果。
1)、否,返回上一个表的迭代器所在位置继续处理下一条数据,进入19步。
2)、是,查询结束,进入20步。
19、回到上一连接表迭代器扫描停止的位置继续扫描数据,转第8步。
20、准备返回结果。
1)、否,进入23步;
2)、是,进入22步。
22、需要给存储节点发送初始化数据以访问迭代器,同时发送初始化查询计划节点。
23、只需给存储节点发送初始化数据访问迭代器。
24、由存储节点上的新引擎,初始化相应的新引擎查询计划数据结构,并初始化数据结构初始值。
25、初始化存储节点数据迭代器。
26、读一条记录。
27、是否使用新的引擎处理,即存储节点根据资源状况来判断是否允许新引擎功能启动;
1)、否,这里为了提高效率,TDSQL V30实际上会积累一批数据进行返回,这里为了说明问题简单直接返回数据,返回数据到查询引擎第8步。
2)、是,进入28步。
28、处理数据,这里处理数据功能细节可以参考第12步描述。
1)、否,进入30步;
2)、是,数据返回到第14步,这里同样会遵循第步骤27中的批量数据返回的原则。
1)、否,读取下一条记录,进入第26步;
2)、是,进入31步;
31、检查是否需要返回结果,这里主要是针对聚集计算需要扫描完所有数据才可以返回处理结果而言。
1)、否,进入第33步;
2)、是,返回结果到第14步。
33、清理新引擎计划数据结构。
34、清理存储节点迭代器数据结构。
本实施例具有以下有益效果:
1、在查询执行的过程中,因为两个查询引擎是结合在一起的,能够使得整个查询的执行可以在一条查询语句执行的过程中,利用到两个查询引擎各自在查询处理中的优点。
2、在存算分离架构的数据库集群中,通过新引擎模块,将部分计算工作下沉到存储节点,从而提升整个查询过程中性能(尽可能早的过滤和处理记录,减少记录在存储节点和计算节点间搬迁的网络带宽的消耗)。
3、通过新引擎执行过程中,能够让存储节点根据自身资源使用情况,决定计算哪个模块完成,可以更加平衡整个集群中各种资源的使用,来更好的满足用户对于集群性能的要求。
4、通过新引擎的封装,让整个查询执行,能够很方便的利用到新引擎实现的某一部分查询处理优化算法,带来的查询执行的性能提升,因为新的查询引擎可以以查询计划的最小值行单元(算子或者迭代器中的表处理)位单位嵌入原查询计划,因此可以最大程度,最快速度的提升查询执行的性能。
5、通过记录(行)级别粒度的执行模式的切换能力,来使得整个集群的对于资源的使用情况能够非常迅速的感知,并能够迅速作出响应,最终达到最优化使用集群各种节点的资源,达到集群最有的处理能力的效果。
应该理解的是,虽然图2-图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种数据查询装置800,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:
计划获取模块802,用于获取待查询的数据组织单元对应的初始查询计划和新增查询计划;新增查询计划是基于新增查询引擎所要求的数据结构,对初始查询计划进行数据结构转换得到的;
数据处理模块804,用于通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理;
引擎切换模块806,用于若数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
上述数据查询装置,获取待查询的数据组织单元对应的初始查询计划和新增查询计划,其中新增查询计划是基于新增查询引擎所要求的数据结构,对初始查询计划进行数据结构转换得到的,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,若数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理,由于在数据库服务器中增加了新增查询引擎,并且可以根据数据库服务器的当前资源状态自适应地切换查询引擎,提高了数据库服务器在执行查询时的灵活性。
在一个实施例中,数据处理模块,还用于获取数据库服务器对应的当前资源状态;当数据库服务器对应的当前资源状态满足新增查询引擎对应的运行条件时,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理;当数据库服务器对应的当前资源状态不满足新增查询引擎对应的运行条件时,通过原生查询引擎读取数据组织单元中的数据记录,并按照原生查询计划对读取的数据记录进行处理。
在一个实施例中,数据处理模块,还用于根据数据库服务器对应的当前资源状态,确定新增查询引擎所调用的执行线程数量,得到目标数量;通过新增查询引擎调用目标数量的执行线程读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理。
在一个实施例中,初始查询计划包括多个查询计划单元;上述装置还包括结构转换模块,用于从多个查询计划单元中确定新增查询引擎所支持的目标查询计划单元;按照新增查询引擎所要求的数据结构对目标查询计划单元进行数据结构转换,得到目标查询计划单元对应的新增查询计划;数据处理模块,还用于当存在与目标查询计划单元对应的新增查询计划时,通过新增查询引擎读取数据组织单元中的数据记录,并按照目标查询计划单元对应的新增查询计划对读取的数据记录进行处理;当不存在与目标查询计划单元对应的新增查询计划时,通过原生查询引擎读取数据组织单元中的数据记录,并按照目标查询计划单元对读取的数据记录进行处理。
在一个实施例中,数据库服务器包括存储节点和计算节点,计算节点为原生查询引擎所在的节点,存储节点为数据库所在的节点,存储节点设置新增查询引擎;计算节点用于获取待查询的数据组织单元对应的初始查询计划和新增查询计划,将新增查询计划发送至存储节点;存储节点用于通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理。
在一个实施例中,存储节点设置原生查询引擎;存储节点还用于监测自身的资源状态,当监测到自身的资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,存储节点切换为通过原生查询引擎读取数据组织单元中当前读取的数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
在一个实施例中,存储节点还用于监测自身的资源状态,当监测到自身的资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,存储节点从数据组织单元中读取当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回计算节点;计算节点还用于通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
在一个实施例中,计算节点设置有新增查询引擎,当计算节点的当前资源状态满足新增查询引擎对应的运行条件时,计算节点用于通过新增查询引擎读取后序数据记录,并按照新增查询计划对读取的后序数据记录进行处理;当计算节点的当前资源状态不满足新增查询引擎对应的运行条件时,计算节点用于通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
在一个实施例中,存储节点用于通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,将得到的处理结果写入第一消息字段,将第一消息字段返回计算节点;存储节点还用于从数据组织单元中读取当前读取的数据记录对应的后序数据记录,将读取的后序数据记录写入第二消息字段,将第二消息字段返回计算节点。
在一个实施例中,当接收到第一消息字段时,计算节点用于读取第一消息字段中的处理结果,并跳过对处理结果所对应的数据记录的处理;当接收到第二消息字段时,计算节点用于通过原生查询引擎读取第二消息字段中的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
在一个实施例中,数据组织单元为目标查询任务对应于目标查询任务;上述装置还包括资源配置模块,用于接收资源配置请求;资源配置请求中携带目标查询任务对应的资源分配信息;为目标查询任务分配与资源分配信息对应的目标资源额度;当新增查询引擎所占用的资源超出目标资源额度时,判定数据库服务器对应的当前资源状态满足引擎切换条件。
在一个实施例中,上述装置还用于在通过原生查询引擎读取后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理的过程中,若数据库服务器的当前资源状态满足新增查询引擎的运行条件,则在当前读取的后序数据记录处理完成后,重新切换为通过新增查询引擎读取数据组织单元中当前读取的后序数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
在一个实施例中,如图9所示,提供了一种数据查询装置900,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:
计划接收模块902,用于接收计算节点发送的与数据组织单元对应的新增查询计划,新增查询计划是由计算节点基于新增查询引擎所要求的数据结构,对获取的与原生查询引擎对应的初始查询计划进行数据结构转换得到的;
数据处理模块904,用于通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至计算节点;
切换模块906,用于若存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取数据组织单元中当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至计算节点,以使得计算节点对返回的后序数据记录进行处理。
上述数据查询装置,接收计算节点发送的与数据组织单元对应的新增查询计划,该新增查询计划是由计算节点基于新增查询引擎所要求的数据结构,对获取的与原生查询引擎对应的初始查询计划进行数据结构转换得到的,通过新增查询引擎读取数据组织单元中的数据记录,并按照新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至计算节点,若存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取数据组织单元中当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至计算节点,以使得计算节点对返回的后序数据记录进行处理,一方面由于在存储节点上设置新增查询引擎,可以通过存储节点计算资源的冗余产生查询执行的收益,另一方面,存储节点自己根据资源情况确定是否调用新增查询引擎来对数据进行处理或者按照原有逻辑直接返回记录由上层计算节点来完成计算处理,从而可以保证得到查询优化处理效果的同时,避免资源使用集中到存储节点,造成整个集群吞吐能力下降的问题。
在一个实施例中,计算节点设置有新增查询引擎,计算节点用于通过新增查询引擎读取返回的后序数据记录,并按照新增查询计划对读取的后序数据记录进行处理;若监测到当前资源状态满足引擎切换条件,则在当前读取的后序数据记录处理完成后,切换为通过原生查询引擎读取数据组织单元中当前读取的后序数据记录对应的后序数据记录,并按照初始查询计划对读取的后序数据记录进行处理。
关于数据查询装置的具体限定可以参见上文中对于数据查询方法的限定,在此不再赘述。上述数据查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是数据库服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据查询方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (19)
1.一种数据查询方法,由数据库服务器执行,其特征在于,所述数据库服务器设置有原生查询引擎和新增查询引擎;所述方法包括:
获取待查询的数据组织单元对应的初始查询计划和新增查询计划;
所述新增查询计划是基于所述新增查询引擎所要求的数据结构,对所述初始查询计划进行数据结构转换得到的;
通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理;
若所述数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
2.根据权利要求1所述的方法,其特征在于,所述通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,包括:
获取所述数据库服务器对应的当前资源状态;
当所述数据库服务器对应的当前资源状态满足所述新增查询引擎对应的运行条件时,通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理;
当所述数据库服务器对应的当前资源状态不满足所述新增查询引擎对应的运行条件时,通过所述原生查询引擎读取所述数据组织单元中的数据记录,并按照所述原生查询计划对读取的数据记录进行处理。
3.根据权利要求2所述的方法,其特征在于,所述通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,包括:
根据所述数据库服务器对应的当前资源状态,确定所述新增查询引擎所调用的执行线程数量,得到目标数量;
通过所述新增查询引擎调用所述目标数量的执行线程读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理。
4.根据权利要求1所述的方法,其特征在于,所述初始查询计划包括多个查询计划单元;所述方法还包括:
从所述多个查询计划单元中确定所述新增查询引擎所支持的目标查询计划单元;
按照所述新增查询引擎所要求的数据结构对所述目标查询计划单元进行数据结构转换,得到所述目标查询计划单元对应的新增查询计划;
所述通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理包括:
当存在与所述目标查询计划单元对应的新增查询计划时,通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述目标查询计划单元对应的新增查询计划对读取的数据记录进行处理;
当不存在与所述目标查询计划单元对应的新增查询计划时,通过所述原生查询引擎读取所述数据组织单元中的数据记录,并按照所述目标查询计划单元对读取的数据记录进行处理。
5.根据权利要求1所述的方法,其特征在于,所述数据库服务器包括存储节点和计算节点,所述计算节点为所述原生查询引擎所在的节点,所述存储节点为所述数据库所在的节点,所述存储节点设置有所述新增查询引擎;所述获取待查询的数据组织单元对应的初始查询计划和新增查询计划,包括:
所述计算节点获取待查询的数据组织单元对应的初始查询计划和新增查询计划,将所述新增查询计划发送至所述存储节点;
所述通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,包括:
所述存储节点通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理。
6.根据权利要求5所述的方法,其特征在于,所述存储节点还设置有所述原生查询引擎;所述若所述数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理,包括:
所述存储节点监测自身的资源状态,若监测到自身的资源状态满足引擎切换条件,则
在当前读取的数据记录处理完成后,所述存储节点切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
7.根据权利要求5所述的方法,其特征在于,所述若所述数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理,包括:
所述存储节点监测自身的资源状态,若监测到自身的资源状态满足引擎切换条件,则
在当前读取的数据记录处理完成后,所述存储节点从所述数据组织单元中读取当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回所述计算节点;
所述计算节点通过所述原生查询引擎读取所述后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
8.根据权利要求7所述的方法,其特征在于,所述计算节点还设置有所述新增查询引擎,所述计算节点通过所述原生查询引擎读取所述后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理,包括:
当所述计算节点的当前资源状态满足所述新增查询引擎对应的运行条件时,所述计算节点通过所述新增查询引擎读取所述后序数据记录,并按照所述新增查询计划对读取的后序数据记录进行处理;
当所述计算节点的当前资源状态不满足所述新增查询引擎对应的运行条件时,所述计算节点通过所述原生查询引擎读取所述后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
9.根据权利要求7所述的方法,其特征在于,所述存储节点通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,包括:
所述存储节点通过新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,将得到的处理结果写入第一消息字段,将所述第一消息字段返回所述计算节点;
所述存储节点从所述数据组织单元中读取当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回所述计算节点,包括:
所述存储节点从所述数据组织单元中读取当前读取的数据记录对应的后序数据记录,将读取的后序数据记录写入第二消息字段,将所述第二消息字段返回所述计算节点。
10.根据权利要求9所述的方法,其特征在于,所述计算节点通过所述原生查询引擎读取所述后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理,包括:
当接收到所述第一消息字段时,所述计算节点读取所述第一消息字段中的处理结果,并跳过对所述处理结果所对应的数据记录的处理;
当接收到所述第二消息字段时,所述计算节点通过所述原生查询引擎读取所述第二消息字段中的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
11.根据权利要求1至10任意一项所述的方法,其特征在于,所述数据组织单元为对应于目标查询任务;所述方法还包括:
接收资源配置请求;所述资源配置请求中携带所述目标查询任务对应的资源分配信息;
为所述目标查询任务分配与所述资源分配信息对应的目标资源额度;
当所述新增查询引擎所占用的资源超出所述目标资源额度时,判定所述数据库服务器对应的当前资源状态满足引擎切换条件。
12.根据权利要求1至10任意一项所述的方法,其特征在于,在所述方法还包括:
在通过所述原生查询引擎读取后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理的过程中,若所述数据库服务器的当前资源状态满足所述新增查询引擎的运行条件,则
在当前读取的后序数据记录处理完成后,重新切换为通过所述新增查询引擎读取所述数据组织单元中当前读取的后序数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
13.一种数据查询方法,由数据库服务器所包括的存储节点执行,所述数据库服务器还包括计算节点,其特征在于,所述计算节点为原生查询引擎所在的节点,所述存储节点为数据库所在的节点,所述存储节点设置新增查询引擎;所述方法包括:
接收计算节点发送的与数据组织单元对应的新增查询计划,所述新增查询计划是由计算节点基于所述新增查询引擎所要求的数据结构,对获取的与所述原生查询引擎对应的初始查询计划进行数据结构转换得到的;
通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至所述计算节点;
若所述存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至所述计算节点,以使得所述计算节点对返回的后序数据记录进行处理。
14.根据权利要求13所述的方法,其特征在于,所述计算节点设置有新增查询引擎,所述计算节点用于执行以下步骤:
通过所述新增查询引擎读取所述返回的后序数据记录,并按照所述新增查询计划对读取的后序数据记录进行处理;
若监测到当前资源状态满足引擎切换条件,则在当前读取的后序数据记录处理完成后,切换为通过所述原生查询引擎读取所述数据组织单元中所述当前读取的后序数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
15.一种数据查询装置,其特征在于,所述装置包括:
计划获取模块,用于获取待查询的数据组织单元对应的初始查询计划和新增查询计划;所述新增查询计划是基于新增查询引擎所要求的数据结构,对所述初始查询计划进行数据结构转换得到的;
数据处理模块,用于通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理;
引擎切换模块,用于若数据库服务器的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,切换为通过原生查询引擎读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,并按照所述初始查询计划对读取的后序数据记录进行处理。
16.一种数据查询装置,其特征在于,所述装置包括:
计划接收模块,用于接收计算节点发送的与数据组织单元对应的新增查询计划,所述新增查询计划是由计算节点基于新增查询引擎所要求的数据结构,对获取的与原生查询引擎对应的初始查询计划进行数据结构转换得到的;
数据处理模块,用于通过所述新增查询引擎读取所述数据组织单元中的数据记录,并按照所述新增查询计划对读取的数据记录进行处理,将得到的处理结果返回至所述计算节点;
切换模块,用于若存储节点的当前资源状态满足引擎切换条件,则在当前读取的数据记录处理完成后,读取所述数据组织单元中所述当前读取的数据记录对应的后序数据记录,将读取的后序数据记录返回至所述计算节点,以使得所述计算节点对返回的后序数据记录进行处理。
17.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12或13至14中任一项所述的方法的步骤。
18.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12或13至14中任一项所述的方法的步骤。
19.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12或13至14中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111359992.3A CN113792079B (zh) | 2021-11-17 | 2021-11-17 | 数据查询方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111359992.3A CN113792079B (zh) | 2021-11-17 | 2021-11-17 | 数据查询方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113792079A true CN113792079A (zh) | 2021-12-14 |
CN113792079B CN113792079B (zh) | 2022-02-08 |
Family
ID=78877307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111359992.3A Active CN113792079B (zh) | 2021-11-17 | 2021-11-17 | 数据查询方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113792079B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226237A (zh) * | 2023-04-27 | 2023-06-06 | 天津南大通用数据技术股份有限公司 | 一种支持多个计算引擎的分布式查询计划生成方法及装置 |
Citations (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1987853A (zh) * | 2005-12-23 | 2007-06-27 | 北大方正集团有限公司 | 关系型数据库与全文检索相结合的检索方法 |
CN102486778A (zh) * | 2010-12-02 | 2012-06-06 | 卓望数码技术(深圳)有限公司 | 手机浏览器和基于手机浏览器的搜索引擎切换方法 |
CN102937955A (zh) * | 2011-11-29 | 2013-02-20 | Ut斯达康通讯有限公司 | 一种基于MySQL双存储引擎的内存数据库实现方法 |
CN102968480A (zh) * | 2011-11-17 | 2013-03-13 | 微软公司 | 浏览器工具栏中的查询精化 |
CN103902293A (zh) * | 2014-03-28 | 2014-07-02 | 上海下一代广播电视网应用实验室有限公司 | 基于android广电网络浏览器中间件系统构建方法 |
CN105138704A (zh) * | 2015-09-30 | 2015-12-09 | 北京奇虎科技有限公司 | 一种搜索结果控制方法及电子设备 |
CN105550351A (zh) * | 2015-12-28 | 2016-05-04 | 中国民航信息网络股份有限公司 | 旅客行程数据即席查询系统及方法 |
CN105824957A (zh) * | 2016-03-30 | 2016-08-03 | 电子科技大学 | 分布式内存列式数据库的查询引擎系统及查询方法 |
US20160357858A1 (en) * | 2015-06-04 | 2016-12-08 | Umm Al-Qura University | Using online social networks to find trends of top vacation destinations |
CN107330098A (zh) * | 2017-07-06 | 2017-11-07 | 北京理工大学 | 一种自定义报表的查询方法、计算节点及查询系统 |
CN107357919A (zh) * | 2017-07-21 | 2017-11-17 | 携程旅游网络技术(上海)有限公司 | 行为日志查询系统及方法 |
CN108446323A (zh) * | 2018-02-11 | 2018-08-24 | 山东省农业信息中心 | 一种基于全文搜索引擎的数据检索方法及装置 |
CN109063170A (zh) * | 2018-08-17 | 2018-12-21 | 百度在线网络技术(北京)有限公司 | 智能查询方法、装置、终端和计算机可读存储介质 |
CN109117426A (zh) * | 2017-06-23 | 2019-01-01 | 中兴通讯股份有限公司 | 分布式数据库查询方法、装置、设备及存储介质 |
CN109597814A (zh) * | 2018-12-06 | 2019-04-09 | 广州万惠信息技术咨询服务有限公司 | 一种后台管理信息系统的在线快速交付系统 |
US20190354526A1 (en) * | 2018-05-18 | 2019-11-21 | Oracle International Corporation | Fast distributed graph query engine |
US10528599B1 (en) * | 2016-12-16 | 2020-01-07 | Amazon Technologies, Inc. | Tiered data processing for distributed data |
WO2020036738A1 (en) * | 2018-08-13 | 2020-02-20 | Amazon Technologies, Inc. | Burst performance of database queries according to query size |
CN111338716A (zh) * | 2020-02-28 | 2020-06-26 | 中国平安人寿保险股份有限公司 | 基于规则引擎的数据处理方法、装置及终端设备 |
CN111971666A (zh) * | 2018-01-16 | 2020-11-20 | 甲骨文国际公司 | 优化sql查询计划的维度上下文传播技术 |
CN111984393A (zh) * | 2020-10-12 | 2020-11-24 | 浙江大华技术股份有限公司 | 分布式大规模实时数据调度引擎系统及其数据调度方法 |
CN112286954A (zh) * | 2020-09-25 | 2021-01-29 | 北京邮电大学 | 基于混合引擎的多维数据分析方法和系统 |
CN112506964A (zh) * | 2020-11-30 | 2021-03-16 | 深圳市移卡科技有限公司 | 数据查询方法、系统及计算机可读存储介质 |
CN112612793A (zh) * | 2020-12-25 | 2021-04-06 | 恒生电子股份有限公司 | 资源查询方法、装置、节点设备及存储介质 |
CN113297287A (zh) * | 2021-04-28 | 2021-08-24 | 上海淇玥信息技术有限公司 | 用户策略自动部署方法、装置及电子设备 |
CN113468204A (zh) * | 2021-06-28 | 2021-10-01 | 深信服科技股份有限公司 | 一种数据查询方法、装置、设备、介质 |
-
2021
- 2021-11-17 CN CN202111359992.3A patent/CN113792079B/zh active Active
Patent Citations (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1987853A (zh) * | 2005-12-23 | 2007-06-27 | 北大方正集团有限公司 | 关系型数据库与全文检索相结合的检索方法 |
CN102486778A (zh) * | 2010-12-02 | 2012-06-06 | 卓望数码技术(深圳)有限公司 | 手机浏览器和基于手机浏览器的搜索引擎切换方法 |
CN102968480A (zh) * | 2011-11-17 | 2013-03-13 | 微软公司 | 浏览器工具栏中的查询精化 |
CN102937955A (zh) * | 2011-11-29 | 2013-02-20 | Ut斯达康通讯有限公司 | 一种基于MySQL双存储引擎的内存数据库实现方法 |
CN103902293A (zh) * | 2014-03-28 | 2014-07-02 | 上海下一代广播电视网应用实验室有限公司 | 基于android广电网络浏览器中间件系统构建方法 |
US20160357858A1 (en) * | 2015-06-04 | 2016-12-08 | Umm Al-Qura University | Using online social networks to find trends of top vacation destinations |
CN105138704A (zh) * | 2015-09-30 | 2015-12-09 | 北京奇虎科技有限公司 | 一种搜索结果控制方法及电子设备 |
CN105550351A (zh) * | 2015-12-28 | 2016-05-04 | 中国民航信息网络股份有限公司 | 旅客行程数据即席查询系统及方法 |
CN105824957A (zh) * | 2016-03-30 | 2016-08-03 | 电子科技大学 | 分布式内存列式数据库的查询引擎系统及查询方法 |
US10528599B1 (en) * | 2016-12-16 | 2020-01-07 | Amazon Technologies, Inc. | Tiered data processing for distributed data |
CN109117426A (zh) * | 2017-06-23 | 2019-01-01 | 中兴通讯股份有限公司 | 分布式数据库查询方法、装置、设备及存储介质 |
CN107330098A (zh) * | 2017-07-06 | 2017-11-07 | 北京理工大学 | 一种自定义报表的查询方法、计算节点及查询系统 |
CN107357919A (zh) * | 2017-07-21 | 2017-11-17 | 携程旅游网络技术(上海)有限公司 | 行为日志查询系统及方法 |
CN111971666A (zh) * | 2018-01-16 | 2020-11-20 | 甲骨文国际公司 | 优化sql查询计划的维度上下文传播技术 |
CN108446323A (zh) * | 2018-02-11 | 2018-08-24 | 山东省农业信息中心 | 一种基于全文搜索引擎的数据检索方法及装置 |
US20190354526A1 (en) * | 2018-05-18 | 2019-11-21 | Oracle International Corporation | Fast distributed graph query engine |
WO2020036738A1 (en) * | 2018-08-13 | 2020-02-20 | Amazon Technologies, Inc. | Burst performance of database queries according to query size |
CN109063170A (zh) * | 2018-08-17 | 2018-12-21 | 百度在线网络技术(北京)有限公司 | 智能查询方法、装置、终端和计算机可读存储介质 |
CN109597814A (zh) * | 2018-12-06 | 2019-04-09 | 广州万惠信息技术咨询服务有限公司 | 一种后台管理信息系统的在线快速交付系统 |
CN111338716A (zh) * | 2020-02-28 | 2020-06-26 | 中国平安人寿保险股份有限公司 | 基于规则引擎的数据处理方法、装置及终端设备 |
CN112286954A (zh) * | 2020-09-25 | 2021-01-29 | 北京邮电大学 | 基于混合引擎的多维数据分析方法和系统 |
CN111984393A (zh) * | 2020-10-12 | 2020-11-24 | 浙江大华技术股份有限公司 | 分布式大规模实时数据调度引擎系统及其数据调度方法 |
CN112506964A (zh) * | 2020-11-30 | 2021-03-16 | 深圳市移卡科技有限公司 | 数据查询方法、系统及计算机可读存储介质 |
CN112612793A (zh) * | 2020-12-25 | 2021-04-06 | 恒生电子股份有限公司 | 资源查询方法、装置、节点设备及存储介质 |
CN113297287A (zh) * | 2021-04-28 | 2021-08-24 | 上海淇玥信息技术有限公司 | 用户策略自动部署方法、装置及电子设备 |
CN113468204A (zh) * | 2021-06-28 | 2021-10-01 | 深信服科技股份有限公司 | 一种数据查询方法、装置、设备、介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116226237A (zh) * | 2023-04-27 | 2023-06-06 | 天津南大通用数据技术股份有限公司 | 一种支持多个计算引擎的分布式查询计划生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113792079B (zh) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110168516B (zh) | 用于大规模并行处理的动态计算节点分组方法及系统 | |
CN110166282B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
US20180157711A1 (en) | Method and apparatus for processing query based on heterogeneous computing device | |
US20230124520A1 (en) | Task execution method and storage device | |
US9165032B2 (en) | Allocation of resources for concurrent query execution via adaptive segmentation | |
US11228489B2 (en) | System and methods for auto-tuning big data workloads on cloud platforms | |
US10268741B2 (en) | Multi-nodal compression techniques for an in-memory database | |
AU2019201544B2 (en) | Distributed multiple tier multi-node serverless framework for complex analytics task execution | |
CN109815283B (zh) | 一种异构数据源可视化查询方法 | |
US8321476B2 (en) | Method and system for determining boundary values dynamically defining key value bounds of two or more disjoint subsets of sort run-based parallel processing of data from databases | |
JP2016042284A (ja) | 並列計算機システム、管理装置、並列計算機システムの制御方法及び管理装置の制御プログラム | |
US8027972B2 (en) | Nodal data normalization | |
CN113792079B (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN110807145A (zh) | 查询引擎获取方法、设备和计算机可读存储介质 | |
CA3161221A1 (en) | System for monitoring and optimizing computing resource usage of cloud based computing application | |
EP3553658A1 (en) | Distributed multiple tier multi-node serverless framework for complex analytics task execution | |
Thamsen et al. | Continuously improving the resource utilization of iterative parallel dataflows | |
JP5043166B2 (ja) | 計算機システム、データ検索方法及びデータベース管理計算機 | |
CN115982230A (zh) | 数据库的跨数据源查询方法、系统、设备及存储介质 | |
CN115576924A (zh) | 一种数据迁移的方法 | |
CN115883550A (zh) | 任务处理方法、装置、电子设备、存储介质及程序产品 | |
CN114546652A (zh) | 一种参数预估方法、装置及电子设备 | |
CN113641674A (zh) | 一种自适应全局序号发生方法和装置 | |
CN112163030A (zh) | 多表批量操作方法、系统及计算机设备 | |
WO2023232127A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230925 Address after: 518000 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 Floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 518000 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 Floors Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |