数据查询方法及装置、电子设备及存储介质
文献发布时间:2024-04-18 19:58:26
技术领域
本说明书一个或多个实施例涉及数据库技术领域,尤其涉及一种数据查询方法及装置、电子设备及存储介质。
背景技术
在互联网和信息化高速发展的今天,数据的产生呈爆炸式增长,因此对数据库及其管理的要求越来越高。在根据SQL语句等数据查询语言对数据库内的数据进行数据查询时,可以先对数据查询语言进行编译,形成用于表征查询计划的编译结果,再根据编译结果完成数据查询。数据查询语句中包括多个谓词,编译结果内包括各个谓词的执行顺序,相关技术中根据编译结果进行数据查询时,效果还有待提高,例如查询速度有待提高等。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据查询方法及装置、电子设备及存储介质。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种数据查询方法,所述方法包括:
在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序,其中,所述被查询数据包括多个数据单元;
响应于针对下一个数据单元的数据查询结束,获取下一个数据单元的第二查询时间;
响应于所述第一查询时间大于或等于所述第二查询时间,在所述数据查询语言的编译结果中保留所述第一谓词和所述第二谓词的顺序;
响应于所述第一查询时间小于所述第二查询时间,在所述数据查询语言的编译结果中恢复所述第一谓词和所述第二谓词的顺序。
本说明书的一个实施例中,所述方法还包括:
响应于所述第一查询时间大于或等于所述第二查询时间,将所述数据查询语言的编译结果中第三谓词和第四谓词调换顺序。
本说明书的一个实施例中,所述方法还包括:
响应于所述第一查询时间小于所述第二查询时间,降低所述第一谓词和所述第二谓词形成的谓词组合的调换概率值;
所述将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序,包括:
在所述数据查询语言的编译结果中调换概率值最高的任一谓词组合中的两个谓词的顺序。
本说明书的一个实施例中,所述方法还包括:
在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,响应于针对至少一个数据单元的数据查询结束,获取所述数据查询语言的编译结果中每个谓词的平均执行代价;
所述响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序,包括:
在所述平均执行代价小于代价阈值的情况下,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序。
本说明书的一个实施例中,所述方法还包括:
在所述数据查询语言的编译结果中每个谓词的平均执行代价大于或等于所述代价阈值的情况下,执行所述数据查询语言的编译结果中每个谓词的过程中获取对应谓词的统计信息,其中,所述统计信息包括选择性和执行代价;
根据每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
本说明书的一个实施例中,所述根据每个谓词的统计,对所述数据查询语言的编译结果的谓词顺序进行重排,包括:
根据每个谓词的统计信息,确定每个谓词的权重;
按照权重由大到小的顺序排列每个谓词。
本说明书的一个实施例中,所述谓词的统计信息还包括所述谓词执行过程中所针对的数据量;
所述根据每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排,包括:
根据每个谓词的统计信息中所述谓词执行过程中所针对的数据量,对所有谓词进行过滤;
根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
本说明书的一个实施例中,所述根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排,包括:
在过滤结果中的谓词数量大于或等于数量阈值的情况下,根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
本说明书的一个实施例中,所述方法还包括:
在过滤结果中的谓词数量小于所述数量阈值的情况下,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序。
本说明书的一个实施例中,所述方法还包括:
根据数据查询语言,生成编译结果。
根据本说明书一个或多个实施例的第二方面,提出了一种数据查询装置,所述装置包括:
第一调换模块,用于在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序,其中,所述被查询数据包括多个数据单元;
获取模块,用于响应于针对下一个数据单元的数据查询结束,获取下一个数据单元的第二查询时间;
保留模块,用于响应于所述第一查询时间大于或等于所述第二查询时间,在所述数据查询语言的编译结果中保留所述第一谓词和所述第二谓词的顺序;
恢复模块,用于响应于所述第一查询时间小于所述第二查询时间,在所述数据查询语言的编译结果中恢复所述第一谓词和所述第二谓词的顺序。
本说明书的一个实施例中,所述装置还包括第二调换模块,用于:
响应于所述第一查询时间大于或等于所述第二查询时间,将所述数据查询语言的编译结果中第三谓词和第四谓词调换顺序。
本说明书的一个实施例中,所述装置还包括概率模块,用于:
响应于所述第一查询时间小于所述第二查询时间,降低所述第一谓词和所述第二谓词形成的谓词组合的调换概率值;
所述第一调换模块具体用于:
在所述数据查询语言的编译结果中调换概率值最高的任一谓词组合中的两个谓词的顺序。
本说明书的一个实施例中,所述装置还包括探测模块,用于:
在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,响应于针对至少一个数据单元的数据查询结束,获取所述数据查询语言的编译结果中每个谓词的平均执行代价;
所述第一调换模块具体用于:
在所述平均执行代价小于代价阈值的情况下,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序。
本说明书的一个实施例中,所述装置还包括重排模块,用于:
在所述数据查询语言的编译结果中每个谓词的平均执行代价大于或等于所述代价阈值的情况下,执行所述数据查询语言的编译结果中每个谓词的过程中获取对应谓词的统计信息,其中,所述统计信息包括选择性和执行代价;
根据每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
本说明书的一个实施例中,所述重排模块用于根据每个谓词的统计,对所述数据查询语言的编译结果的谓词顺序进行重排时,具体用于:
根据每个谓词的统计信息,确定每个谓词的权重;
按照权重由大到小的顺序排列每个谓词。
本说明书的一个实施例中,所述谓词的统计信息还包括所述谓词执行过程中所针对的数据量;
所述重排模块用于根据每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排时,具体用于:
根据每个谓词的统计信息中所述谓词执行过程中所针对的数据量,对所有谓词进行过滤;
根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
本说明书的一个实施例中,所述重排模块用于根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排时,具体用于:
在过滤结果中的谓词数量大于或等于数量阈值的情况下,根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
本说明书的一个实施例中,所述装置还包括第三调换模块,用于:
在过滤结果中的谓词数量小于所述数量阈值的情况下,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序。
本说明书的一个实施例中,所述装置还包括编译模块,用于:
根据数据查询语言,生成编译结果。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例所提供的数据查询方法运行在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,可以响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序,并响应于针对下一个数据单元的数据查询结束,获取下一个数据单元的第二查询时间;然后响应于所述第一查询时间大于或等于所述第二查询时间,在所述数据查询语言的编译结果中保留所述第一谓词和所述第二谓词的顺序,响应于所述第一查询时间小于所述第二查询时间,在所述数据查询语言的编译结果中恢复所述第一谓词和所述第二谓词的顺序。也就是说,数据查询过程中,可以不断尝试调整谓词之间的顺序,并以数据单元的查询时间来衡量调整前后谓词顺序的优劣,从而可以在数据查询的过程中持续动态优化谓词顺序,以提高查询性能,且调整方式简单方便,不依赖于谓词执行的统计信息,未给数据查询造成额外负担。
附图说明
图1是一示例性实施例提供的一种数据查询方法的流程图。
图2是一示例性实施例提供的无统计信息的谓词重排策略的示意图;
图3是一示例性实施例提供的谓词重排策略的选择方式的示意图;
图4是一示例性实施例提供的一种设备的结构示意图。
图5是一示例性实施例提供的一种数据查询装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
在互联网和信息化高速发展的今天,数据的产生呈爆炸式增长,因此对数据库及其管理的要求越来越高。在根据SQL语句等数据查询语言对数据库内的数据进行数据查询时,可以先对数据查询语言进行编译,形成用于表征查询计划的编译结果,再根据编译结果完成数据查询。数据查询语句中包括多个谓词,谓词即为数据查询语言中返回值是逻辑值的函数,例如大于、等于、小于、和、或等词;编译结果内包括各个谓词的执行顺序,相关技术中根据编译结果进行数据查询时,效果还有待提高,例如查询速度有待提高等。
举例来说,生成编译结果时,无法准确评估谓词执行的统计信息,因此会造成编译结果不准确。再举例来说,数据的分布是动态变化的,即使编译结果较准确,但是在根据编译结果进行数据查询时,统计信息也可能发生改变,导致原本准确的编译结果失去准确性。
基于此,第一方面,本说明书至少一个实施例提供了一种数据查询方法,该方法可以应用在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,例如在数据查询的执行阶段(数据查询包括根据数据查询语言生成编译结果的编译阶段,和根据编译阶段对被查询数据进行数据查询的执行阶段)对编译结果中的谓词顺序进行持续、动态调整,以使编译结果尽量保持实时准确,从而提高数据查询的效果,例如查询速度等。
请参照附图1,其示例性的示出了该数据查询方法的流程,包括步骤S101至步骤S104。
在步骤S101中,在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序,其中,所述被查询数据包括多个数据单元。
其中,根据数据查询语言的编译结果对被查询数据进行数据查询的过程即为数据查询的执行阶段。可以理解的是,在执行阶段前的编译阶段可以根据数据查询语言,生成编译结果。示例性的,根据数据查询语言所针对的被查询数据中的表、列、索引等信息,生成表征执行计划的编译结果。
被查询数据被划分为多个数据单元,例如按照一定行数依次将被查询数据的所有行划分为多个行组合,每个行组合即为一个数据单元。以10000行的数据表为例,可以从第一行至最后一行每1000行划分为一个数据单元,即第1行至第1000行为第一个数据单元,第1001行至第2000行为第二个数据单元,第2001行至第3000行为第三个数据单元,第3001行至第4000行为第四个数据单元,第4001行至第5000行为第五个数据单元,第5001行至第6000行为第六个数据单元,第6001行至第7000行为第七个数据单元,第7001行至第8000行为第八个数据单元,第8001行至第9000行为第九个数据单元,第9001行至第10000行为第十个数据单元。
本步骤可以在任何一个数据单元的数据查询结束时运行;或者在任一个数据单元的数据查询结束,且在所述数据查询语言的编译结果中保留所述第一谓词和所述第二谓词被调换后的顺序。
本步骤可以随机将数据查询语言的编译结果中的两个谓词作为第一谓词和第二谓词进行顺序调换;或者,在所述数据查询语言的编译结果中调换概率值最高的任一谓词组合中的两个谓词的顺序,其中,关于调换概率值的具体细节将在后文进行详细介绍,这里暂不赘述。
在步骤S102中,响应于针对下一个数据单元的数据查询结束,获取下一个数据单元的第二查询时间。
在针对每个数据单元执行数据查询时可以进行计时,其中,第一查询时间为针对当前的数据单元执行数据查询,并得到查询结果的耗时;第二查询时间为针对下一个数据单元执行数据查询,并得到查询结果的耗时。
在步骤S103中,响应于所述第一查询时间大于或等于所述第二查询时间,在所述数据查询语言的编译结果中保留所述第一谓词和所述第二谓词的顺序。
其中,第一查询时间大于或等于第二查询时间,说明第一谓词和第二谓词在调换顺序后,数据单元的查询耗时减少,查询速度加快,因此可以保留调换后的顺序。
另外,在保留第一谓词和第二谓词被调换后的顺序时,第二查询时间可以表征当前的编译结果针对数据单元执行查询时的耗时,因此可以作为下一次调换谓词顺序的尝试中的调换前的谓词顺序。换句话说,可以响应于所述第一查询时间大于或等于所述第二查询时间,将所述数据查询语言的编译结果中第三谓词和第四谓词调换顺序(即执行与步骤S101相同的操作);并针对第三谓词和第四谓词调换顺序后的编译结果继续执行步骤S102和步骤S103,或步骤S102和步骤S104。也就是说,执行步骤S103后,可以继续重复执行该方法。
在步骤S104中,响应于所述第一查询时间小于所述第二查询时间,在所述数据查询语言的编译结果中恢复所述第一谓词和所述第二谓词的顺序。
其中,第一查询时间小于第二查询时间,说明第一谓词和第二谓词在调换顺序后,数据单元的查询耗时增加,查询速度减慢,因此可以恢复调换前的顺序。
另外,在恢复第一谓词和第二谓词被调换前的顺序时,可以尽量降低第一谓词和第二谓词的顺序调换的尝试。即响应于所述第一查询时间小于所述第二查询时间,降低所述第一谓词和所述第二谓词形成的谓词组合的调换概率值。其中,编译结果中所有谓词组合的调换概率值初始为相等的值,每次执行步骤S104时会降低被恢复的谓词组合的调换概率值,从而使的谓词组合出现调换概率值差异,因此在执行步骤S101时可以依据调换概率值选择被调换的谓词组合,即在所述数据查询语言的编译结果中调换概率值最高的任一谓词组合中的两个谓词的顺序。
本说明书实施例所提供的数据查询方法运行在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,可以响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序,并响应于针对下一个数据单元的数据查询结束,获取下一个数据单元的第二查询时间;然后响应于所述第一查询时间大于或等于所述第二查询时间,在所述数据查询语言的编译结果中保留所述第一谓词和所述第二谓词的顺序,响应于所述第一查询时间小于所述第二查询时间,在所述数据查询语言的编译结果中恢复所述第一谓词和所述第二谓词的顺序。也就是说,数据查询过程中,可以不断尝试调整谓词之间的顺序,并以数据单元的查询时间来衡量调整前后谓词顺序的优劣,从而可以在数据查询的过程中持续动态优化谓词顺序,以提高查询性能,且调整方式简单方便,不依赖于谓词执行的统计信息,未给数据查询造成额外负担。
概括来说,上述实施例中对谓词进行重排的方式可以称之为无统计信息的谓词重排策略,请参照附图2,策略开始后随机选择两个谓词交换执行顺序,并确定交换后执行效率是否提高,若提高则保留交换顺序,若未提高则恢复交换前的顺序并降低下次选择同样谓词交换的概率。
除了上述实施例中介绍的无统计信息的谓词重排策略之外,本说明书还提供一种有统计信息的谓词重排策略,因此本说明书中的一些实施例可以在对谓词进行重排之前,在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,响应于针对至少一个数据单元的数据查询结束,获取所述数据查询语言的编译结果中每个谓词的平均执行代价,以用于判断采用何种谓词重排策略。优选的,响应于针对多个数据单元的数据查询结束,获取所述数据查询语言的编译结果中每个谓词的平均执行代价。
其中,可以根据数据查询语言的编译结果,依次针对多个数据单元(例如10个)执行数据查询,即执行编译结果中每个谓词,并统计针对多个数据单元执行数据查询的总耗时,进而根据总耗时和谓词数量计算每个谓词的平均耗时,所述谓词的平均耗时即为所述谓词的平均执行代价。
得到每个谓词的平均执行代价后,若所述平均执行代价小于代价阈值则执行上述无统计信息的谓词重排策略,若所述平均执行代价大于或等于代价阈值则执行上述有统计信息的谓词重排策略,例如周期性的执行上述有统计信息的谓词重排策略。即:
在所述平均执行代价小于代价阈值的情况下,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序(执行步骤S101)。
在所述数据查询语言的编译结果中每个谓词的平均执行代价大于或等于所述代价阈值的情况下,先执行所述数据查询语言的编译结果中每个谓词的过程中获取对应谓词的统计信息,其中,所述统计信息包括选择性和执行代价,选择性可以为谓词在数据行上北匹配的概率,执行代价可以为谓词在数据行的查询耗时;再根据每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
示例性的,根据每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排可以包括:首先,根据每个谓词的统计信息(例如选择性和执行代价),确定每个谓词的权重;接下来,按照权重由大到小的顺序排列每个谓词。
其中,所述谓词的统计信息还可以包括所述谓词执行过程中所针对的数据量。例如,某两个谓词依次执行,第一个谓词针对完整的数据单元进行数据查询,而第二个谓词针对第一个谓词的执行结果进行数据查询;形象的来说,数据单元可以包括100个数据行,第一个谓词针对100个数据行进行数据查询,得到10个数据行,第二个谓词则针对该10个数据行执行数据查询。可以理解,谓词执行过程中所针对的数据量越大,则针对该谓词获取的统计信息的有效性越高,谓词执行过程中所针对的数据量越小,则针对该谓词获取的统计信息的有效性越低;这是因为,谓词针对足量的数据执行数据查询时才能得到有效的执行代价和选择性等统计信息。
再示例性的,根据每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排可以包括:首先,根据每个谓词的统计信息中所述谓词执行过程中所针对的数据量,对所有谓词进行过滤;接下来,根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。例如根据过滤结果中每个谓词的统计信息确定每个谓词的权重,并按照权重由大到小的顺序排列过滤结果中每个谓词,再将剩余的谓词随机排列在过滤结果之后。
该示例仅针对过滤后的谓词进行有效排序,对于被过滤掉的谓词未进行有效排序;因此可以在对所有谓词进行过滤后统计过滤结果中的谓词数量(或统计过滤结果中谓词数量占所有谓词的数量的比例),其中,过滤结果中的谓词数量为可以收集到足够的有效统计信息的谓词的数量;若过滤结果中的谓词数量足够多(或统计过滤结果中谓词数量占所有谓词的数量的比例足够大)则继续按照有统计信息的谓词重排策略进行谓词重排,若过滤结果中的谓词数量不够多(或统计过滤结果中谓词数量占所有谓词的数量的比例不够大)则按照无统计信息的谓词重排策略进行谓词重排。即:
在过滤结果中的谓词数量大于或等于数量阈值(或过滤结果中谓词数量占所有谓词的数量的比例大于或等于比例阈值)的情况下,根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
在过滤结果中的谓词数量小于所述数量阈值(或过滤结果中谓词数量占所有谓词的数量的比例小于比例阈值)的情况下,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序。
通过上述示例中对编译结果中所有谓词的过滤,以及在过滤结果中谓词数量不同(或过滤结果中谓词数量占所有谓词的数量的比例不同)时分别采用不同重排策略对谓词进行重排,可以保证谓词重排的准确性。
请参照附图3,其示例性的示出了结合上述多个实施例所得到的谓词重排策略的选择方式。数据查询的执行阶段开始后,可以收集谓词执行代价信息,并确定谓词平均执行代价是否低(例如以代价阈值来衡量是否低),若是则选择无统计信息的谓词重排策略,若否则运行时统计信息收集,并判断是否收集到足够统计信息,若否则选择无统计信息的谓词重排策略,若是则选择有统计信息的谓词重排策略。
本方法通过运行时探测谓词重排策略,并根据探测到的谓词重排策略自适应进行谓词重排,在产生更优执行计划的同时,尽可能降低策略本身的额外负载,更适用于实际复杂的数据库查询环境。
图4是一示例性实施例提供的一种设备的示意结构图。请参考图4,在硬件层面,该设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他任务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图5,数据查询装置可以应用于如图4所示的设备中,以实现本说明书的技术方案。所述装置包括:
第一调换模块501,用于在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序,其中,所述被查询数据包括多个数据单元;
获取模块502,用于响应于针对下一个数据单元的数据查询结束,获取下一个数据单元的第二查询时间;
保留模块503,用于响应于所述第一查询时间大于或等于所述第二查询时间,在所述数据查询语言的编译结果中保留所述第一谓词和所述第二谓词的顺序;
恢复模块504,用于响应于所述第一查询时间小于所述第二查询时间,在所述数据查询语言的编译结果中恢复所述第一谓词和所述第二谓词的顺序。
本说明书的一个实施例中,所述装置还包括第二调换模块,用于:
响应于所述第一查询时间大于或等于所述第二查询时间,将所述数据查询语言的编译结果中第三谓词和第四谓词调换顺序。
本说明书的一个实施例中,所述装置还包括概率模块,用于:
响应于所述第一查询时间小于所述第二查询时间,降低所述第一谓词和所述第二谓词形成的谓词组合的调换概率值;
所述第一调换模块具体用于:
在所述数据查询语言的编译结果中调换概率值最高的任一谓词组合中的两个谓词的顺序。
本说明书的一个实施例中,所述装置还包括探测模块,用于:
在根据数据查询语言的编译结果对被查询数据进行数据查询的过程中,响应于针对至少一个数据单元的数据查询结束,获取所述数据查询语言的编译结果中每个谓词的平均执行代价;
所述第一调换模块具体用于:
在所述平均执行代价小于代价阈值的情况下,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序。
本说明书的一个实施例中,所述装置还包括重排模块,用于:
在所述数据查询语言的编译结果中每个谓词的平均执行代价大于或等于所述代价阈值的情况下,执行所述数据查询语言的编译结果中每个谓词的过程中获取对应谓词的统计信息,其中,所述统计信息包括选择性和执行代价;
根据每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
本说明书的一个实施例中,所述重排模块用于根据每个谓词的统计,对所述数据查询语言的编译结果的谓词顺序进行重排时,具体用于:
根据每个谓词的统计信息,确定每个谓词的权重;
按照权重由大到小的顺序排列每个谓词。
本说明书的一个实施例中,所述谓词的统计信息还包括所述谓词执行过程中所针对的数据量;
所述重排模块用于根据每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排时,具体用于:
根据每个谓词的统计信息中所述谓词执行过程中所针对的数据量,对所有谓词进行过滤;
根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
本说明书的一个实施例中,所述重排模块用于根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排时,具体用于:
在过滤结果中的谓词数量大于或等于数量阈值的情况下,根据过滤结果中每个谓词的统计信息,对所述数据查询语言的编译结果的谓词顺序进行重排。
本说明书的一个实施例中,所述装置还包括第三调换模块,用于:
在过滤结果中的谓词数量小于所述数量阈值的情况下,响应于针对当前的数据单元的数据查询结束,获取当前的数据单元的第一查询时间,并将所述数据查询语言的编译结果中第一谓词和第二谓词调换顺序。
本说明书的一个实施例中,所述装置还包括编译模块,用于:
根据数据查询语言,生成编译结果。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
- 一种数据查询方法、装置、电子设备及存储介质
- 一种数据查询方法、装置、电子设备及存储介质
- 数据查询方法、装置、存储介质和电子设备
- 数据查询方法、装置、电子设备及计算机可读存储介质
- 电子装置、基于多个临时数据表的数据查询方法及存储介质
- 数据存储方法和装置、数据查询方法和装置、数据结构、电子设备及计算机可读存储介质
- 基于数据库的数据查询方法、装置、电子设备及存储介质