CN111046066A - 远程数据库对象的优化方法、装置、设备及存储介质 - Google Patents
远程数据库对象的优化方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111046066A CN111046066A CN201911250798.4A CN201911250798A CN111046066A CN 111046066 A CN111046066 A CN 111046066A CN 201911250798 A CN201911250798 A CN 201911250798A CN 111046066 A CN111046066 A CN 111046066A
- Authority
- CN
- China
- Prior art keywords
- plan
- node
- target
- plan node
- connection
- 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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例公开了一种远程数据库对象的优化方法、装置、设备及存储介质,该方法包括:将目标SQL语句的初始执行计划中符合优化条件的计划节点确定为目标计划节点;针对每个计划节点,在确定所述计划节点为目标计划节点时,改写所述目标计划节点对应的初始SQL语句和连接计划节点,得到相应的优化SQL语句和嵌套循环计划节点;生成所述目标SQL语句的目标执行计划,并执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量。本发明实施例可以减少远程大表的网络传输数据量,提高本地数据库节点的SQL执行效率,同时解决异构数据库情况下,远程大表可能无法优化的问题。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种远程数据库对象优化方法、装置、设备及存储介质。
背景技术
数据库链接(DataBase Link)简称为DBLINK,它记录了远程数据库的连接和路径信息,用于建立本地数据库与远程数据库的联系。当通过DBLINK所访问远程数据库对象的数据量过于庞大时,简称这种远程数据库对象为“远程大表”,远程大表可能包含几十万、几百万、几千万甚至上亿的数据。如果将远程大表数据全部通过网络传输到本地参与计算,则网络传输开销很大,严重影响本地数据库节点的结构化查询语言(Structured QueryLanguage,SQL)执行效率。特别的,与远程大表相对的是远程小表,如果把远程小表看作一种特殊的本地数据库对象,则存在通过本地数据库节点建立远程小表和远程大表之间访问链接的情况;此时,远程小表包含的数据较少,全部传到本地数据库节点参与运算,因此可以把远程小表看作一种特殊的本地数据库对象,而如果同时将远程大表数据全部通过本地数据库与远程大表所属远程数据库之间的链接传输到本地数据库节点,再与本地缓存的远程小表数据进行计算,则同样会出现远程大表网络传输开销过大,以及影响本地数据库节点SQL执行效率的问题。综上可知,对于远程大表,如何减少网络传输的数据量至关重要。
目前已有的远程大表优化方式主要是:如果远程数据量远远大于本地数据量,则通过添加提示(HINT)的方式将本地数据发送到远程数据库执行(将远程小表看作一种特殊的本地数据库对象)。这种远程大表的优化方式的实施需要解决以下问题:(1)DBLINK只记录了远程数据库的连接和路径信息,DBLINK是单向的,远程数据库如何通过DBLINK反向获取本地数据;(2)如果是异构数据库(异构数据库指不同的数据库管理系统,如:达梦数据库、ORACLE、MYSQL、SQL SERVER等),则远程数据库如何根据本地数据库的不同类型分别采取不同的方式获取本地表数据;(3)如果SQL中同时包含多个不同远程数据库节点对应的远程大表和本地表做连接查询,则SQL语句在哪个节点执行,SQL语句怎么分割到各个远程数据库节点去执行。
此外,上述远程大表优化方式存在一个致命的缺陷:即在异构数据库情况下,本地数据库虽然指定了HINT,但是如果远程数据库不能配合使用,则不能实现远程大表优化,如:远程数据库不能或不支持通过DBLINK返向获取本地数据。
发明内容
本发明实施例提供一种远程数据库对象优化方法、装置、设备及存储介质,以减少远程大表的网络传输数据量,降低网络传输开销,提高本地数据库节点的SQL执行效率,同时解决异构数据库情况下,远程大表可能无法优化的问题。
第一方面,本发明实施例提供了一种远程数据库对象的优化方法,该方法包括:
遍历检查目标结构化查询语言SQL语句所对应初始执行计划的所有计划节点,将符合优化条件的计划节点确定为目标计划节点;
针对每个计划节点,在确定所述计划节点为所述目标计划节点时,改写执行所述目标计划节点时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句;
将所述目标计划节点对应的连接计划节点修改为嵌套循环计划节点,并基于所述连接计划节点的右子计划节点,结合所述优化SQL语句,得到所述嵌套循环计划节点的右子计划节点;
将修改后包含各所述嵌套循环计划节点及对应右子计划节点的执行计划确定为所述目标SQL语句的目标执行计划,并执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量。
第二方面,本发明实施例还提供了一种远程数据库对象的优化装置,该装置包括:
节点检查模块,用于遍历检查目标结构化查询语言SQL语句所对应初始执行计划的所有计划节点,将符合优化条件的计划节点确定为目标计划节点;
语句改写模块,用于针对每个计划节点,在确定所述计划节点为所述目标计划节点时,改写执行所述目标计划节点时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句;
节点修改模块,用于将所述目标计划节点对应的连接计划节点修改为嵌套循环计划节点,并基于所述连接计划节点的右子计划节点,结合所述优化SQL语句,得到所述嵌套循环计划节点的右子计划节点;
计划执行模块,用于将修改后包含各所述嵌套循环计划节点及对应右子计划节点的执行计划确定为所述目标SQL语句的目标执行计划,并执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量。
第三方面,本发明实施例还提供了一种远程数据库对象的优化设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例第一方面所述的远程数据库对象的优化方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明实施例第一方面所述的远程数据库对象的优化方法。
本发明实施例通过改写目标SQL语句的初始执行计划以及执行所述初始执行计划时发送至远程数据库节点的初始SQL语句,并将得到的优化SQL语句发送至远程数据库节点执行,由此减少了远程数据库节点返回本地数据库节点的数据量,降低了网络传输开销,提高了本地数据库节点的SQL执行效率,同时解决了异构数据库情况下,远程大表可能无法优化的问题。
附图说明
图1是本发明实施例一提供的一种远程数据库对象的优化方法的流程示意图;
图2是本发明实施例二提供的一种远程数据库对象的优化方法的流程示意图;
图3是本发明实施例二提供的一种远程数据库对象的优化方法的流程示例图;
图4是本发明实施例三提供的一种远程数据库对象的优化装置的结构示意图;
图5是本发明实施例四提供的一种远程数据库对象的优化设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种远程数据库对象的优化方法的流程示意图,本实施例可适用于减少远程大表的网络传输数据量,降低网络传输开销,提高本地数据库节点的SQL执行效率,以及解决异构数据库情况下,远程大表可能无法优化的问题的情况,该方法可以由远程数据库对象的优化装置来执行,该装置可以通过软件和/或硬件的方式实现,并可集成在远程数据库对象的优化设备中。
可以理解的是,在本地表与远程表做连接查询时,如果远程数据量远远大于本地数据量,那么将远程数据全部通过网络传输到本地参与计算,会使得网络传输开销很大,并且严重影响本地数据库节点的SQL执行效率。同样的,在远程小表与远程大表通过本地数据库节点做连接查询时,也会出现相同的问题。而在本地表与远程表做连接查询时,如果本地表连接列对应的元组值较少,可依次将本地表连接列对应的元组值作为发送至远程数据库节点的SQL语句所对应的过滤条件,由此,可在远程数据库节点实现对原有远程数据的过滤,使得通过网络传输回本地数据库节点的远程数据量大大减少,从而大大降低网络传输开销,提高本地数据库节点的SQL执行效率,同时由于本方案无需通过DBLINK返向获取本地表数据以传输至远程数据库节点,因此,可以很好地解决异构数据库情况下,远程大表可能无法优化的问题。同理,在远程小表与远程大表通过本地数据库节点做连接查询时,将远程小表看作特殊的本地数据库对象,运用上述方案也可以解决远程大表带来的网络传输开销大以及异构数据库情况下,远程大表可能无法优化的问题。具体实现时可基于原始SQL语句改写发送至远程数据库节点的初始SQL语句,以生成更优的执行计划来代替原有的执行计划,进而通过执行优化后的执行计划,即可实现上述优化效果,解决相应的技术问题。
需要说明的是,对于远程小表与远程大表通过本地数据库节点做连接查询的情况,由于远程小表数据全部传到本地数据库节点参与运算,因此本发明实施例中把远程小表看作一种特殊的本地数据库对象,即本发明实施例所述的本地表连接列包含远程小表连接列。
如图1所示,本实施例提供的远程数据库对象的优化方法,具体包括如下步骤:
S101、遍历检查目标结构化查询语言SQL语句所对应初始执行计划的所有计划节点,将符合优化条件的计划节点确定为目标计划节点。
其中,所述目标SQL语句是指原始待执行的SQL语句。执行计划可以理解为一条SQL语句在数据库中实际执行时对应的执行操作步骤;通常,执行计划为由各类操作符组成树形结构,一个操作符对应一个树节点,本申请中将执行计划中每个操作符所在的指令语句作为一个计划节点;所述初始执行计划为所述目标SQL语句对应的执行计划。
所述优化条件是指判断所述初始执行计划的每个计划节点能否作为目标计划节点的判断条件,可选地,若所述初始执行计划存在目标计划节点,则认为可以应用本发明实施例所述的优化方法对所述初始执行计划进行优化。
可选地,将目标SQL语句所对应初始执行计划的首个计划节点确定为当前计划节点,并对所述当前计划节点进行检查;若所述当前计划节点包含远程数据库对象,且所述远程数据库对象为内连接查询的左边或右边对象、左外连接查询的右边对象,或者右外连接查询的左边对象,则将所述当前计划节点确定为目标计划节点;将所述当前计划节点的下一个计划节点作为新的当前计划节点,并返回执行对所述当前计划节点的检查操作,直至遍历所述初始执行计划的所有计划节点。
其中,所述远程数据库对象可以指目标SQL语句中指向远程数据库的数据库对象,其中,所述数据库对象可以为表、视图、同义词等。
可以理解的是,本发明实施例在于逐行获取本地表连接列的元组值作为远程表连接列的WHERE过滤条件。因此,在应用本发明实施例所述的优化方法之前,应首先确定目标SQL语句对应的初始执行计划是否可以被优化,本步骤在于遍历检查所述初始执行计划的所有计划节点,若检查到符合优化条件的目标计划节点,则证明所述初始执行计划可以被优化,并等待执行后续的优化步骤。
对于内连接查询,由于内连接查询的左边对象和右边对象可以等价交换,无论远程数据库对象作为内连接查询的左边对象还是右边对象,远程数据库对象返回本地数据库节点的元组都是一样的,因此,对内连接查询,远程数据库对象无论是左边对象还是右边对象,都可应用本发明实施例所述的优化方法进行优化。
对于左外连接查询,由于目标SQL语句在执行时左边对象对应的元组是全返回的,而右边对象对应的元组只返回满足ON连接条件的部分,不满足ON连接条件时则填空值NULL,WHERE过滤条件则是对远程数据库对象所有返回的元组进行过滤;此时,若远程数据库对象作为左外连接查询的左边对象,则优化前后其对应的返回的元组是不同的(即优化前后不等价),而若远程数据库对象作为左外连接查询的右边对象,则优化前后其对应的返回的元组是相同的(即优化前后等价);因此,远程数据库对象作为左外连接查询的左边对象时,不可以优化,而远程数据库对象作为左外连接查询的右边对象时,可以优化。
对于右外连接查询,由于目标SQL语句在执行时右边对象对应的元组是全返回的,而左边对象对应的元组只返回满足ON连接条件的部分,不满足ON连接条件时则填空值NULL,WHERE过滤条件则是对远程数据库对象所有返回的元组进行过滤;此时,若远程数据库对象作为右外连接查询的右边对象,则优化前后其对应的返回的元组是不同的(即优化前后不等价),而若远程数据库对象作为右外连接查询的左边对象,则优化前后其对应的返回的元组是相同的(即优化前后等价);因此,远程数据库对象作为右外连接查询的右边对象时,不可以优化,而远程数据库对象作为右外连接查询的左边对象时,可以优化。
对于全外连接查询,由于目标SQL语句在执行时左边对象和右边对象对应的元组均是全返回的;此时,远程数据库对象无论是作为全外连接查询的左边对象还是右边对象,其优化前后对应返回的元组都是不同的(即优化前后不等价);因此,远程数据库对象无论是作为全外连接查询的左边对象还是右边对象,均不可以优化。
示例性的,表1给出了本发明实施例中远程数据库的可优化范围。
表1 远程数据库可优化范围表
连接类型 | 左边对象 | 右边对象 |
内连接 | √ | √ |
左外连接 | × | √ |
右外连接 | √ | × |
全外连接 | × | × |
注:表1中“√”表示可优化,“×”表示不可优化。
S102、针对每个计划节点,在确定所述计划节点为所述目标计划节点时,改写执行所述目标计划节点时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句。
其中,所述初始SQL语句可以理解为针对每个目标计划节点,执行所述目标计划节点时,对应发送至远程数据库节点的SQL语句。
可选地,针对每个计划节点,在确定所述计划节点为所述目标计划节点时,从所述目标SQL语句中获取与所述目标计划节点对应的连接条件,并将所述连接条件确定为第一布尔表达式,所述第一布尔表达式包含本地连接列;将所述第一布尔表达式转换为以一个元组变量表示所述本地连接列中任一元组值的第二布尔表达式,并生成包含所述元组变量与所述本地连接列中各所述元组值的映射关系链表;将所述第二布尔表达式作为过滤条件并与执行所述目标计划节点时发送至远程数据库节点的初始SQL语句相结合,得到所述初始SQL语句的优化SQL语句。
其中,所述连接条件是指所述目标SQL语句中与所述目标计划节点对应的ON连接条件;将所述ON连接条件确定为第一布尔表达式,所述第一布尔表达式包含本地连接列,所述本地连接列可以理解为本地数据库对象的某一列,可选地,所述本地连接列可以为本地数据库表的某一列,即所述本地表连接列,也可以是通过网络发送至本地数据库节点进行缓存后参与运算的远程小表连接列。
可以理解的是,通过从所述目标SQL语句中获取与所述目标计划节点对应的连接条件,并将所述连接条件中的本地连接列转换为元组变量的形式,得到所述初始SQL语句的优化SQL语句,由此,通过多次执行所述优化SQL语句,每次将本地连接列对应的不同元组值赋值给所述元组变量,以作为对远程数据库对象的过滤条件,从而减少远程数据库对象返回的远程数据量。
S103、将所述目标计划节点对应的连接计划节点修改为嵌套循环计划节点,并基于所述连接计划节点的右子计划节点,结合所述优化SQL语句,得到所述嵌套循环计划节点的右子计划节点。
其中,所述连接计划节点为所述初始执行计划中用于执行相应远程数据库对象与本地数据库对象间连接操作的计划节点,可选地,所述连接计划节点可以为哈希连接查询操作(HASH INNER JOIN)对应的计划节点。所述嵌套循环计划节点可以理解为能够执行嵌套循环连接操作(NEST LOOP INNER JOIN)的计划节点。可选地,所述右子计划节点为操作符“REMOTE SCAN”所在的计划节点。
可选地,基于所述目标计划节点关联的远程数据库对象和本地数据库对象,确定所述初始执行计划中用于执行所述远程数据库对象与本地数据库对象间连接操作的连接计划节点;将所述连接计划节点确定为所述目标计划节点对应的连接计划节点,并将所述连接计划节点修改为嵌套循环计划节点;在所述连接计划节点的右子计划节点中增加与所述优化SQL语句中第二布尔表达式相对应的计划连接条件,得到所述右子计划节点对应的修改右子计划节点;将所述修改右子计划节点确定为所述嵌套循环计划节点的右子计划节点。
其中,所述计划连接条件可以理解为所述嵌套循环计划节点的右子计划节点中,与对应优化SQL语句所包含的第二布尔表达式相对应的指令语句。
可以理解的是,嵌套循环连接操作(NEST LOOP INNER JOIN)处理的两个数据集被称为外部循环(也叫驱动表)和内部循环,当外部循环执行一次的时候,内部循环需要针对外部循环返回的每条记录执行一次。
示例性的,执行“select a.*,b*from EMP a,DEPT b where a.DEPTNO=b.DEPTNO”,如使用emp表为出发点,将emp表的记录都查询出来为m条,再将这m条记录的字段deptno值,逐条和dept表的所有记录的deptno字段值匹配,假如dept表有n条记录,匹配出来的记录符合条件就写入到结果集中。
由此,通过将原有的连接计划节点修改为嵌套循环计划节点,可以实现在对应的远程数据库节点循环执行相应的优化SQL语句,每次将本地连接列对应的不同元组值赋值给所述元组变量,以作为对远程数据库对象的过滤条件,从而减少远程数据库对象返回的远程数据量。
可以理解的是,对于本地表和远程大表之间的连接查询,可以通过执行嵌套循环计划节点的左子计划节点,依次从对应映射关系链表中取出对应本地连接列的元组值赋值给对应元组变量;而对于远程小表与远程大表通过本地数据库节点做连接查询的情况,在执行嵌套循环计划节点的左子计划节点后,先访问远程小表,将映射关系链表所对应远程小表连接列的元组值获取到本地数据库节点,然后再依次取出远程小表连接列的元组值赋值给所述映射关系链表中对应的元组变量,以作为对远程大表的过滤条件。之后,通过执行所述嵌套循环计划节点的右子计划节点,将被赋值的元组变量所对应的优化SQL语句发送到远程大表所在的数据库节点执行,以使远程大表只返回满足所述过滤条件的数据,从而优化远程大表的网络数据传输量。
S104、将修改后包含各所述嵌套循环计划节点及对应右子计划节点的执行计划确定为所述目标SQL语句的目标执行计划,并执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量。
其中,所述目标执行计划可以理解为对所述初始执行计划进行优化后得到的执行计划,各所述优化SQL语句作为所述目标执行计划的被执行对象,用于在执行所述目标执行计划时,将各所述优化SQL语句发送至远程数据库节点执行,以优化所述远程数据库节点的网络数据传输量。
可选地,通过执行所述目标执行计划,将所述目标执行计划对应的各优化SQL语句发送至所述远程数据库节点,以使所述远程数据库节点执行所述优化SQL语句;接收所述远程数据库节点执行各所述优化SQL语句后返回的远程数据,以优化所述远程数据库节点的网络数据传输量。
本发明实施例通过改写目标SQL语句的初始执行计划以及执行所述初始执行计划时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句以及所述目标SQL语句的目标执行计划,通过执行所述目标执行计划,将所述优化SQL语句发送至远程数据库节点执行,由此减少了远程数据库节点返回本地数据库节点的数据量,降低了网络传输开销,提高了本地数据库节点的SQL执行效率,同时解决了异构数据库情况下,远程大表可能无法优化的问题。
实施例二
图2是本发明实施例二提供的一种远程数据库对象的优化方法的流程示意图,本实施例在实施例一的基础上进一步优化。本实施例将所述遍历检查目标SQL语句所对应初始执行计划的所有计划节点,将符合优化条件的计划节点确定为目标计划节点,具体化为:将目标SQL语句所对应初始执行计划的首个计划节点确定为当前计划节点,并对所述当前计划节点进行检查;若所述当前计划节点包含远程数据库对象,且所述远程数据库对象为内连接查询的左边或右边对象、左外连接查询的右边对象,或者右外连接查询的左边对象,则将所述当前计划节点确定为目标计划节点;将所述当前计划节点的下一个计划节点作为新的当前计划节点,并返回执行对所述当前计划节点的检查操作,直至遍历所述初始执行计划的所有计划节点。
本实施例还把将所述目标计划节点对应的连接计划节点修改为嵌套循环计划节点,并基于所述连接计划节点的右子计划节点,结合所述优化SQL语句,得到所述嵌套循环计划节点的右子计划节点,具体化为:基于所述目标计划节点关联的远程数据库对象和本地数据库对象,确定所述初始执行计划中用于执行所述远程数据库对象与本地数据库对象间连接操作的连接计划节点;将所述连接计划节点确定为所述目标计划节点对应的连接计划节点,并将所述连接计划节点修改为嵌套循环计划节点;在所述连接计划节点的右子计划节点中增加与所述优化SQL语句中第二布尔表达式相对应的计划连接条件,得到所述右子计划节点对应的修改右子计划节点;将所述修改右子计划节点确定为所述嵌套循环计划节点的右子计划节点。
本实施例还将所述执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量,具体化为:针对所述目标执行计划中的每个嵌套循环计划节点,通过循环执行所述嵌套循环计划节点的左子计划节点,依次从对应映射关系链表中取出对应本地连接列的元组值赋值给对应元组变量;在每次对相应元组变量赋值后,执行所述嵌套循环计划节点的右子计划节点,将被赋值的元组变量所对应的优化SQL语句发送至所述远程数据库节点,以使所述远程数据库节点执行所述优化SQL语句;接收所述远程数据库节点执行各所述优化SQL语句后返回的远程数据,以优化所述远程数据库节点的网络数据传输量。
如图2所示,本实施例提供的远程数据库对象的优化方法,具体包括如下步骤:
S201、将目标SQL语句所对应初始执行计划的首个计划节点确定为当前计划节点,并对所述当前计划节点进行检查。
S202、判断是否所述当前计划节点包含远程数据库对象,且所述远程数据库对象为内连接查询的左边或右边对象、左外连接查询的右边对象,或者右外连接查询的左边对象;若是,则执行S203;否则,执行S211。
S203、将所述当前计划节点确定为目标计划节点。
S204、从所述目标SQL语句中获取与所述目标计划节点对应的连接条件,并将所述连接条件确定为第一布尔表达式,所述第一布尔表达式包含本地连接列。
S205、将所述第一布尔表达式转换为以一个元组变量表示所述本地连接列中任一元组值的第二布尔表达式,并生成包含所述元组变量与所述本地连接列中各所述元组值的映射关系链表。
S206、将所述第二布尔表达式作为过滤条件并与执行所述目标计划节点时发送至远程数据库节点的初始SQL语句相结合,得到所述初始SQL语句的优化SQL语句。
S207、基于所述目标计划节点关联的远程数据库对象和本地数据库对象,确定所述初始执行计划中用于执行所述远程数据库对象与本地数据库对象间连接操作的连接计划节点。
可选地,确定所述第一布尔表达式中包含的远程数据库对象和本地数据库对象,并将所述远程数据库对象和本地数据库对象确定为所述目标计划节点关联的远程数据库对象和本地数据库对象;从所述初始执行计划中确定用于执行所述远程数据库对象与本地数据库对象间连接操作的连接计划节点。
S208、将所述连接计划节点确定为所述目标计划节点对应的连接计划节点,并将所述连接计划节点修改为嵌套循环计划节点。
可选地,将所述连接计划节点包含的连接操作符,替换为嵌套循环连接操作符;将所述连接计划节点中用于指示连接查询条件的条件语句,修改为用于指示嵌套循环变量的变量语句;将修改后包含所述嵌套循环连接操作符和变量语句的计划节点确定为嵌套循环计划节点。
S209、在所述连接计划节点的右子计划节点中增加与所述优化SQL语句中第二布尔表达式相对应的计划连接条件,得到所述右子计划节点对应的修改右子计划节点。
S210、将所述修改右子计划节点确定为所述嵌套循环计划节点的右子计划节点。
S211、将所述当前计划节点的下一个计划节点作为新的当前计划节点。
S212、判断是否遍历所述初始执行计划的所有计划节点;若是,则执行S213,否则,返回执行S202。
S213、判断是否存在目标计划节点;若是,则执行S214;否则,结束。
可以理解的是,在遍历检查目标SQL语句对应初始执行计划的所有计划节点时,存在整个初始执行计划不包含符合本发明实施例优化条件的目标计划节点的情况,此时,说明目标SQL语句不在本发明实施例所述优化方法的优化范围内,可直接结束优化步骤。
S214、将修改后包含各所述嵌套循环计划节点及对应右子计划节点的执行计划确定为目标执行计划。
S215、针对所述目标执行计划中的每个嵌套循环计划节点,通过循环执行所述嵌套循环计划节点的左子计划节点,依次从对应映射关系链表中取出对应本地连接列的元组值赋值给对应元组变量。
其中,所述左子计划节点是指用于依次从对应映射关系链表中取出对应本地连接列的元组值赋值给对应元组变量的计划节点;可选地,所述左子计划节点为操作符“CSCN”所在的计划节点。
S216、在每次对相应元组变量赋值后,执行所述嵌套循环计划节点的右子计划节点,将被赋值的元组变量所对应的优化SQL语句发送至所述远程数据库节点,以使所述远程数据库节点执行所述优化SQL语句。
S217、接收所述远程数据库节点执行各所述优化SQL语句后返回的远程数据,以优化所述远程数据库节点的网络数据传输量。
示例性的,本地创建DBLINK,名称为LNK01,通过ODBC连接名称为“DM8”的数据源:
CREATE LINK LNK01 CONNECT'ODBC'WITH SYSDBA IDENTIFIED BY SYSDBAUSING'DM8';
创建本地数据库对象,表T1:
CREATE TABLE T1(C1 INT,C2 INT);
在LNK01对应的远程数据库创建远程数据库对象,表T2:
CREATE TABLE T2(D1 INT,D2 INT);
在本地表对象T1插入2行数据:
INSERT INTO T1 VALUES(1,1);
INSERT INTO T1 VALUES(2,2);
在LNK01远程表对象T2插入100万行数据:
INSERT INTO T2 SELECT LEVEL,LEVEL FROM DUAL CONNECT BY LEVEL<=1000000;
执行下列目标SQL语句:
SELECT*FROM T1 JOIN T2@LNK01 ON T1.C1=T2.D1
则目标SQL语句对应的初始执行计划(即优化前的执行计划)如下:
其中,初始执行计划的第5行(将每一行看作一个计划节点)“REMOTE SCAN”(为其中一个操作符)通过发送SQL语句(即所述初始SQL语句):“SELECT D1,D2 FROM T2”到LNK01对应的远程数据库获取表T2的数据,此SQL语句将远程表T2的100万行数据全部通过网络传输回本地数据库节点。计划第3行“#HASH INNER JOIN”表示哈希(HASH)连接查询(即所述连接操作符),为双目运算符,KEY_NUM(1)表示包含一个连接查询条件,连接条件(即所述目标SQL中的ON连接条件)为“T1.C1=T2.D1”(T1.C1即为所述本地连接列)。
目标SQL语句对应的目标执行计划(即优化后的执行计划)如下:
其中,目标执行计划的第5行“REMOTE SCAN”仍然从LNK01对应的远程数据库获取表T2的数据,但与优化前不同的是,优化后的“REMOTE SCAN”带有连接条件(即所述计划连接条件)“condition(T2.D1=exp_param(no:0)”,其中“exp_param(no:0)”表示绑定参数。优化后,目标执行计划的第5行“REMOTE SCAN”发送到远程数据库的SQL语句(即优化SQL语句)为:“SELECT D1,D2 FROM T2 WHERE T2.D1=:a”,其中SQL语句中的“:a”(即所述元组变量)对应计划中“exp_param(no:0)”,表示第一个绑定参数,绑定参数对应原始表达式为“T1.C1”(即所述本地连接列)。计划第3行“NEST LOOP INNER JOIN”表示嵌套循环连接查询(即所述嵌套循环连接操作符),为双目运算符,优化前为“#HASH INNER JOIN”,[with var]表示嵌套连接包含变量。
优化后最大区别在于:计划第5行“REMOTE SCAN”返回的数据需要满足条件“condition(T2.D1=exp_param(no:0)”,而“exp_param(no:0)”对应的“T1.C1”只有两行数据1和2,也就是说LNK01对应远程数据库通过网络传输回来T2的数据必须满足“D1=1”或“D1=2”,而T2满足此条件的只有两行数据。
优化前将T2的100万数据都传输回了本地,而优化后只需要传输回T2的两行数据,大大减少了远程数据库对象网络传输的数据量。
示例性的,图3给出了上述优化示例的优化步骤,具体包括:
S11、检查目标SQL的初始执行计划中是否包含满足远程数据库对象优化范围的连接,如果包含,则执行S12;否则,结束。
具体地,从初始执行计划的首个计划节点开始,依次检查每个计划节点,检查是否包含远程数据库对象以及是否符合优化范围(优化范围见表1)。如上述示例中,对优化前的执行计划从第1行(首个计划节点)开始检查,一直检查到第5行“#REMOTE SCAN:[10,1000000,8];T2@LNK01 as T2”包含了远程数据库对象,且符合优化范围。
S12、记录计划当前位置(即确定目标计划节点)。
S13、改写目标SQL中的连接条件。
具体地,定位本地数据库对象和远程数据库对象之间的连接条件(即所述目标SQL中的连接条件),记为“第一布尔表达式”;将“第一布尔表达式”中包含的本地连接列转换为元组变量,构造一个新的布尔表达式,记为“第二布尔表达式”,并记录所述元组变量与本地连接列的映射关系链表。如上述示例中,第一布尔表达式为“T1.C1=T2.D1”,将其中的本地列“T1.C1”转换为元组变量“:a”,则第二布尔表达式为“T2.D1=:a”,并将“:a”与“T1.C1”的对应关系存入映射关系链表。
S14、改写发送给远程数据库的初始SQL语句。
具体地,所述初始SQL语句的形式为:SELECT“使用列”FROM“远程数据库对象”,其中“使用列”表示初始SQL语句中所访问“远程数据库对象”的列。初始SQL语句将远程数据库对象的全部数据行中的使用列都通过网络传输给本地。将初始SQL语句的形式改写为:SELECT“使用列”FROM“远程数据库对象”WHERE“第二布尔表达式”,得到优化SQL语句。如上述示例中,查询项“*”包含T1和T2所有列,即远程数据库对象T2的“使用列”为D1,D2,初始SQL语句为:“SELECT D1,D2 FROM T2@LNK01”;得到的优化SQL语句为:“SELECT D1,D2 FROMT2@LNK01 WHERE T2.D1=:a”。
S15、将初始执行计划中执行远程数据库对象和本地数据库对象连接操作的操作符替换为嵌套循环连接操作符。
如上述示例中,初始执行计划第3行的“HASH INNER JOIN”被优化替换为“NESTLOOP INNER JOIN”。
S16、判断初始执行计划的每个分支是否都检查完(即遍历检查所述初始执行计划的所有计划节点);若是,则执行S18;否则,执行S17。
S17、跳转到S11根据记录的计划当前位置继续检查(即确定新的当前计划节点)。
S18、针对修改后的执行计划中的每个嵌套循环连接操作符,执行所述嵌套循环连接操作符的左儿子操作符,以从映射关系链表中依次取出对应本地列的值赋值给元组变量。
如上述示例中,“NEST LOOP INNER JOIN”的左儿子操作符“CSCN”根据映射关系链表取出对应本地连接列T1.C1的值赋值给元组变量:a,如第一次执行CSCN时取出T1的第一行的C1列值“1”赋值给:a;第二次执行CSCN时取出T1的第二行的C1列值“2”赋值给:a。
S19、在每次对元组变量赋值后,执行所述嵌套循环连接操作符的右儿子操作符,以将变量赋值后的优化SQL语句发送到远程数据库节点执行。
如上述示例中,执行“REMOTE SCAN”时发送给远程数据库节点的优化SQL语句为“SELECT D1,D2 FROM T2@LNK01 WHERE T2.D1=:a;”,第一次执行“REMOTE SCAN”时“:a”的赋值为1;第二次执行“REMOTE SCAN”时“:a”的赋值为2。
S20、接收远程数据库节点执行所述优化SQL语句后返回本地数据库节点的数据。
如上述示例中,远程数据库节点第一次执行优化SQL语句得到满足条件的结果为一行数据,返回给本地数据库的“REMOTE SCAN”,“REMOTE SCAN”将数据向上传递给父操作符“NEST LOOP INNER JOIN”。
本发明实施例通过改写目标SQL语句的初始执行计划以及执行所述初始执行计划时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句以及所述目标SQL语句的目标执行计划,通过执行所述目标执行计划,将所述优化SQL语句发送至远程数据库节点执行,由此减少了远程数据库节点返回本地数据库节点的数据量,降低了网络传输开销,提高了本地数据库节点的SQL执行效率,同时解决了异构数据库情况下,远程大表可能无法优化的问题。
实施例三
图4是本发明实施例三提供的一种远程数据库对象的优化装置的流程示意图,本实施例可适用于减少远程大表的网络传输数据量,降低网络传输开销,提高本地数据库节点的SQL执行效率,以及解决异构数据库情况下,远程大表可能无法优化的问题的情况,该装置可以通过软件和/或硬件的方式实现,该装置具体包括:节点检查模块301、语句改写模块302、节点修改模块303以及计划执行模块304,其中,
节点检查模块301,用于遍历检查目标结构化查询语言SQL语句所对应初始执行计划的所有计划节点,将符合优化条件的计划节点确定为目标计划节点;
语句改写模块302,用于针对每个计划节点,在确定所述计划节点为所述目标计划节点时,改写执行所述目标计划节点时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句;
节点修改模块303,用于将所述目标计划节点对应的连接计划节点修改为嵌套循环计划节点,并基于所述连接计划节点的右子计划节点,结合所述优化SQL语句,得到所述嵌套循环计划节点的右子计划节点;
计划执行模块304,用于将修改后包含各所述嵌套循环计划节点及对应右子计划节点的执行计划确定为所述目标SQL语句的目标执行计划,并执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量。
在上述各实施例的基础上,节点检查模块301,包括:
当前确定单元,用于将目标SQL语句所对应初始执行计划的首个计划节点确定为当前计划节点,并对所述当前计划节点进行检查;
目标确定单元,用于若所述当前计划节点包含远程数据库对象,且所述远程数据库对象为内连接查询的左边或右边对象、左外连接查询的右边对象,或者右外连接查询的左边对象,则将所述当前计划节点确定为目标计划节点;
遍历检查单元,用于将所述当前计划节点的下一个计划节点作为新的当前计划节点,并返回执行对所述当前计划节点的检查操作,直至遍历所述初始执行计划的所有计划节点。
在上述各实施例的基础上,语句改写模块302,包括:
第一确定单元,用于从所述目标SQL语句中获取与所述目标计划节点对应的连接条件,并将所述连接条件确定为第一布尔表达式,所述第一布尔表达式包含本地连接列;
第二确定单元,用于将所述第一布尔表达式转换为以一个元组变量表示所述本地连接列中任一元组值的第二布尔表达式,并生成包含所述元组变量与所述本地连接列中各所述元组值的映射关系链表;
优化生成单元,用于将所述第二布尔表达式作为过滤条件并与执行所述目标计划节点时发送至远程数据库节点的初始SQL语句相结合,得到所述初始SQL语句的优化SQL语句。
在上述各实施例的基础上,节点修改模块303,包括:
连接确定单元,用于基于所述目标计划节点关联的远程数据库对象和本地数据库对象,确定所述初始执行计划中用于执行所述远程数据库对象与本地数据库对象间连接操作的连接计划节点;
节点修改单元,用于将所述连接计划节点确定为所述目标计划节点对应的连接计划节点,并将所述连接计划节点修改为嵌套循环计划节点;
条件增加单元,用于在所述连接计划节点的右子计划节点中增加与所述优化SQL语句中第二布尔表达式相对应的计划连接条件,得到所述右子计划节点对应的修改右子计划节点;
节点确定单元,用于将所述修改右子计划节点确定为所述嵌套循环计划节点的右子计划节点。
在上述各实施例的基础上,所述连接确定单元,包括:
对象确定子单元,用于确定所述第一布尔表达式中包含的远程数据库对象和本地数据库对象,并将所述远程数据库对象和本地数据库对象确定为所述目标计划节点关联的远程数据库对象和本地数据库对象;
连接确定子单元,用于从所述初始执行计划中确定用于执行所述远程数据库对象与本地数据库对象间连接操作的连接计划节点。
在上述各实施例的基础上,所述节点修改单元,包括:
操作符替换子单元,用于将所述连接计划节点包含的连接操作符,替换为嵌套循环连接操作符;
语句修改子单元,用于将所述连接计划节点中用于指示连接查询条件的条件语句,修改为用于指示嵌套循环变量的变量语句;
嵌套确定子单元,用于将修改后包含所述嵌套循环连接操作符和变量语句的计划节点确定为嵌套循环计划节点。
在上述各实施例的基础上,计划执行模块304,包括:
变量赋值单元,用于针对所述目标执行计划中的每个嵌套循环计划节点,通过循环执行所述嵌套循环计划节点的左子计划节点,依次从对应映射关系链表中取出对应本地连接列的元组值赋值给对应元组变量;
优化执行单元,用于在每次对相应元组变量赋值后,执行所述嵌套循环计划节点的右子计划节点,将被赋值的元组变量所对应的优化SQL语句发送至所述远程数据库节点,以使所述远程数据库节点执行所述优化SQL语句;
数据接收单元,用于接收所述远程数据库节点执行各所述优化SQL语句后返回的远程数据,以优化所述远程数据库节点的网络数据传输量。
本发明实施例所提供的远程数据库对象的优化装置可执行本发明任一实施例所提供的远程数据库对象的优化方法,具备执行方法相应的功能模块和有益效果。
实施例四
图5为本发明实施例四提供的一种远程数据库对象的优化设备的结构示意图,如图5所示,该设备包括处理器40、存储器41、输入装置42和输出装置43;该设备中处理器40的数量可以是一个或多个,图5中以一个处理器40为例;该设备中的处理器40、存储器41、输入装置42和输出装置43可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的远程数据库对象的优化方法对应的程序指令/模块(例如,远程数据库对象的优化装置中的节点检查模块301、语句改写模块302、节点修改模块303以及计划执行模块304)。处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行该设备的各种功能应用以及数据处理,即实现上述的远程数据库对象的优化方法。
存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至该设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置42可用于接收输入的数字或字符信息,以及产生与该设备的用户设置以及功能控制有关的键信号输入。输出装置43可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种远程数据库对象的优化方法,该方法包括:
遍历检查目标结构化查询语言SQL语句所对应初始执行计划的所有计划节点,将符合优化条件的计划节点确定为目标计划节点;
针对每个计划节点,在确定所述计划节点为所述目标计划节点时,改写执行所述目标计划节点时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句;
将所述目标计划节点对应的连接计划节点修改为嵌套循环计划节点,并基于所述连接计划节点的右子计划节点,结合所述优化SQL语句,得到所述嵌套循环计划节点的右子计划节点;
将修改后包含各所述嵌套循环计划节点及对应右子计划节点的执行计划确定为所述目标SQL语句的目标执行计划,并执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任一实施例所提供的远程数据库对象的优化方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述远程数据库对象的优化装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种远程数据库对象的优化方法,其特征在于,包括:
遍历检查目标结构化查询语言SQL语句所对应初始执行计划的所有计划节点,将符合优化条件的计划节点确定为目标计划节点;
针对每个计划节点,在确定所述计划节点为所述目标计划节点时,改写执行所述目标计划节点时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句;
将所述目标计划节点对应的连接计划节点修改为嵌套循环计划节点,并基于所述连接计划节点的右子计划节点,结合所述优化SQL语句,得到所述嵌套循环计划节点的右子计划节点;
将修改后包含各所述嵌套循环计划节点及对应右子计划节点的执行计划确定为所述目标SQL语句的目标执行计划,并执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量。
2.根据权利要求1所述的方法,其特征在于,所述遍历检查目标SQL语句所对应初始执行计划的所有计划节点,将符合优化条件的计划节点确定为目标计划节点,包括:
将目标SQL语句所对应初始执行计划的首个计划节点确定为当前计划节点,并对所述当前计划节点进行检查;
若所述当前计划节点包含远程数据库对象,且所述远程数据库对象为内连接查询的左边或右边对象、左外连接查询的右边对象,或者右外连接查询的左边对象,则将所述当前计划节点确定为目标计划节点;
将所述当前计划节点的下一个计划节点作为新的当前计划节点,并返回执行对所述当前计划节点的检查操作,直至遍历所述初始执行计划的所有计划节点。
3.根据权利要求1所述的方法,其特征在于,所述改写执行所述目标计划节点时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句,包括:
从所述目标SQL语句中获取与所述目标计划节点对应的连接条件,并将所述连接条件确定为第一布尔表达式,所述第一布尔表达式包含本地连接列;
将所述第一布尔表达式转换为以一个元组变量表示所述本地连接列中任一元组值的第二布尔表达式,并生成包含所述元组变量与所述本地连接列中各所述元组值的映射关系链表;
将所述第二布尔表达式作为过滤条件并与执行所述目标计划节点时发送至远程数据库节点的初始SQL语句相结合,得到所述初始SQL语句的优化SQL语句。
4.根据权利要求3所述的方法,其特征在于,所述将所述目标计划节点对应的连接计划节点修改为嵌套循环计划节点,并基于所述连接计划节点的右子计划节点,结合所述优化SQL语句,得到所述嵌套循环计划节点的右子计划节点,包括:
基于所述目标计划节点关联的远程数据库对象和本地数据库对象,确定所述初始执行计划中用于执行所述远程数据库对象与本地数据库对象间连接操作的连接计划节点;
将所述连接计划节点确定为所述目标计划节点对应的连接计划节点,并将所述连接计划节点修改为嵌套循环计划节点;
在所述连接计划节点的右子计划节点中增加与所述优化SQL语句中第二布尔表达式相对应的计划连接条件,得到所述右子计划节点对应的修改右子计划节点;
将所述修改右子计划节点确定为所述嵌套循环计划节点的右子计划节点。
5.根据权利要求4所述的方法,其特征在于,所述基于所述目标计划节点关联的远程数据库对象和本地数据库对象,确定所述初始执行计划中用于执行所述远程数据库对象与本地数据库对象间连接操作的连接计划节点,包括:
确定所述第一布尔表达式中包含的远程数据库对象和本地数据库对象,并将所述远程数据库对象和本地数据库对象确定为所述目标计划节点关联的远程数据库对象和本地数据库对象;
从所述初始执行计划中确定用于执行所述远程数据库对象与本地数据库对象间连接操作的连接计划节点。
6.根据权利要求4所述的方法,其特征在于,所述将所述连接计划节点修改为嵌套循环计划节点,包括:
将所述连接计划节点包含的连接操作符,替换为嵌套循环连接操作符;
将所述连接计划节点中用于指示连接查询条件的条件语句,修改为用于指示嵌套循环变量的变量语句;
将修改后包含所述嵌套循环连接操作符和变量语句的计划节点确定为嵌套循环计划节点。
7.根据权利要求4-6任一项所述的方法,其特征在于,所述执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量,包括:
针对所述目标执行计划中的每个嵌套循环计划节点,通过循环执行所述嵌套循环计划节点的左子计划节点,依次从对应映射关系链表中取出对应本地连接列的元组值赋值给对应元组变量;
在每次对相应元组变量赋值后,执行所述嵌套循环计划节点的右子计划节点,将被赋值的元组变量所对应的优化SQL语句发送至所述远程数据库节点,以使所述远程数据库节点执行所述优化SQL语句;
接收所述远程数据库节点执行各所述优化SQL语句后返回的远程数据,以优化所述远程数据库节点的网络数据传输量。
8.一种远程数据库对象的优化装置,其特征在于,包括:
节点检查模块,用于遍历检查目标结构化查询语言SQL语句所对应初始执行计划的所有计划节点,将符合优化条件的计划节点确定为目标计划节点;
语句改写模块,用于针对每个计划节点,在确定所述计划节点为所述目标计划节点时,改写执行所述目标计划节点时发送至远程数据库节点的初始SQL语句,得到所述初始SQL语句的优化SQL语句;
节点修改模块,用于将所述目标计划节点对应的连接计划节点修改为嵌套循环计划节点,并基于所述连接计划节点的右子计划节点,结合所述优化SQL语句,得到所述嵌套循环计划节点的右子计划节点;
计划执行模块,用于将修改后包含各所述嵌套循环计划节点及对应右子计划节点的执行计划确定为所述目标SQL语句的目标执行计划,并执行所述目标执行计划,以优化所述远程数据库节点的网络数据传输量。
9.一种远程数据库对象的优化设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7任一项所述的远程数据库对象的优化方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的远程数据库对象的优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911250798.4A CN111046066B (zh) | 2019-12-09 | 2019-12-09 | 远程数据库对象的优化方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911250798.4A CN111046066B (zh) | 2019-12-09 | 2019-12-09 | 远程数据库对象的优化方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111046066A true CN111046066A (zh) | 2020-04-21 |
CN111046066B CN111046066B (zh) | 2023-05-12 |
Family
ID=70235172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911250798.4A Active CN111046066B (zh) | 2019-12-09 | 2019-12-09 | 远程数据库对象的优化方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111046066B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116401266A (zh) * | 2023-06-08 | 2023-07-07 | 北京四维纵横数据技术有限公司 | 分布式数据库动态过滤方法、装置、计算机设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101174267A (zh) * | 2006-10-30 | 2008-05-07 | 国际商业机器公司 | 集成数据库的系统、方法和程序产品 |
US20080270368A1 (en) * | 2007-04-26 | 2008-10-30 | International Business Machines Corporation | Apparatus, system, and method for efficiently supporting generic sql data manipulation statements |
JP2013152512A (ja) * | 2012-01-24 | 2013-08-08 | Mitsubishi Electric Corp | 情報処理装置及び情報処理方法及びプログラム |
US20140089294A1 (en) * | 2012-09-26 | 2014-03-27 | Microsoft Corporation | Sql generation for assert, update and delete relational trees |
CN108804554A (zh) * | 2018-05-22 | 2018-11-13 | 上海达梦数据库有限公司 | 一种数据库查询方法、装置、服务器和存储介质 |
CN109522320A (zh) * | 2018-11-12 | 2019-03-26 | 杭州弗兰科信息安全科技有限公司 | 一种服务于数据库同态加密的优化方法 |
CN110309196A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 区块链数据存储和查询方法、装置、设备及存储介质 |
CN110502532A (zh) * | 2019-08-26 | 2019-11-26 | 上海达梦数据库有限公司 | 远程数据库对象的优化方法、装置、设备和存储介质 |
-
2019
- 2019-12-09 CN CN201911250798.4A patent/CN111046066B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101174267A (zh) * | 2006-10-30 | 2008-05-07 | 国际商业机器公司 | 集成数据库的系统、方法和程序产品 |
US20080270368A1 (en) * | 2007-04-26 | 2008-10-30 | International Business Machines Corporation | Apparatus, system, and method for efficiently supporting generic sql data manipulation statements |
JP2013152512A (ja) * | 2012-01-24 | 2013-08-08 | Mitsubishi Electric Corp | 情報処理装置及び情報処理方法及びプログラム |
US20140089294A1 (en) * | 2012-09-26 | 2014-03-27 | Microsoft Corporation | Sql generation for assert, update and delete relational trees |
CN108804554A (zh) * | 2018-05-22 | 2018-11-13 | 上海达梦数据库有限公司 | 一种数据库查询方法、装置、服务器和存储介质 |
CN109522320A (zh) * | 2018-11-12 | 2019-03-26 | 杭州弗兰科信息安全科技有限公司 | 一种服务于数据库同态加密的优化方法 |
CN110309196A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 区块链数据存储和查询方法、装置、设备及存储介质 |
CN110502532A (zh) * | 2019-08-26 | 2019-11-26 | 上海达梦数据库有限公司 | 远程数据库对象的优化方法、装置、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
张欣;: "基于SQL标准的关系数据库查询优化技术研究" * |
李桂杰;梅红;: "多关系SQL查询中连接顺序的优化" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116401266A (zh) * | 2023-06-08 | 2023-07-07 | 北京四维纵横数据技术有限公司 | 分布式数据库动态过滤方法、装置、计算机设备及介质 |
CN116401266B (zh) * | 2023-06-08 | 2023-09-05 | 北京四维纵横数据技术有限公司 | 分布式数据库动态过滤方法、装置、计算机设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111046066B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Simitsis et al. | Optimizing ETL processes in data warehouses | |
US9875186B2 (en) | System and method for data caching in processing nodes of a massively parallel processing (MPP) database system | |
US20170147705A1 (en) | Extensions of structured query language for database-native support of graph data | |
CN107038222B (zh) | 数据库缓存实现方法及其系统 | |
CN110837585B (zh) | 多源异构的数据关联查询方法及系统 | |
US7676453B2 (en) | Partial query caching | |
CN106991276B (zh) | 一种基于openEHR模板的数据接口动态生成方法 | |
US10534797B2 (en) | Synchronized updates across multiple database partitions | |
CN110502532B (zh) | 远程数据库对象的优化方法、装置、设备和存储介质 | |
CN105718593A (zh) | 一种数据库查询优化方法及系统 | |
US10970343B2 (en) | Adapting database queries for data virtualization over combined database stores | |
CN110866029B (zh) | sql语句构建方法、装置、服务器及可读存储介质 | |
CN110019314B (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
CN103927331A (zh) | 数据查询方法、装置及系统 | |
CN107480268A (zh) | 数据查询方法及装置 | |
CN106569896A (zh) | 一种数据分发及并行处理方法和系统 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN105550332A (zh) | 一种基于双层索引结构的起源图查询方法 | |
CN114297173A (zh) | 一种面向大规模海量数据的知识图谱构建方法和系统 | |
CN111026782A (zh) | 远程数据库对象的优化方法、装置、设备及存储介质 | |
Kim et al. | Type-based semantic optimization for scalable RDF graph pattern matching | |
US20170068703A1 (en) | Local database cache | |
CN111046066B (zh) | 远程数据库对象的优化方法、装置、设备及存储介质 | |
US10140335B2 (en) | Calculation scenarios with extended semantic nodes | |
CN116483850A (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 |