CN111737295B - 数据库游标查询方法、装置、设备和存储介质 - Google Patents
数据库游标查询方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN111737295B CN111737295B CN202010529716.6A CN202010529716A CN111737295B CN 111737295 B CN111737295 B CN 111737295B CN 202010529716 A CN202010529716 A CN 202010529716A CN 111737295 B CN111737295 B CN 111737295B
- Authority
- CN
- China
- Prior art keywords
- query
- cursor
- result
- query result
- cache
- 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.)
- Active
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/24552—Database cache management
-
- 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/242—Query formulation
- G06F16/2425—Iterative querying; Query formulation based on the results of a preceding query
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库游标查询方法、装置、设备和存储介质,其中,该方法包括:根据查询语句获取查询结果,并将缓存中的查询结果提前返回;根据返回的所述查询结果的缓存地址设置游标的游标结果集;根据所述游标读取所述查询结果。本发明实施例的技术方案实现了数据库内游标查询操作,减少游标等待获取查询结果的时间,提高了游标查询效率,减少了数据库内查询结果的存储空间。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及一种数据库游标查询方法、装置、设备和存储介质。
背景技术
在数据库中,SQL(Structured Query Language,结构化查询语言)脚本中常使用游标进行数据查询,游标与SQL查询语句密切相关,常规方法中游标结果集关联与查询语句返回的查询结果集,游标与查询语句对应,不同的查询语句对应的游标不同,相应的,游标结果集关联的查询结果集不同。现有技术中,游标是数据库执行查询的一种重要手段,打开游标就是执行游标关联的查询语句,根据查询语句生成查询结果集,并将查询结果集登记到游标工作区的游标结果集中,其中,游标定位到游标结果集的第一行之前。在游标打开成功后,该游标对应的查询语句必然执行成功。可以保留游标结果集,供后续的FETCH操作实现查询结果获取。游标打开成功后还将对应的SQL查询语句的执行环境清除。然而上述方法在执行大规模数据查询时存在一些问题,当游标操作仅需要处理部分查询结果就可以结束执行时,但是由于现有的游标操作基于查询语句对应的查询结果集,必须等待全部查询结果生成后,才能获取到查询结果集中的部分查询结果,降低了游标操作整体执行时间。此外,由于保存全部查询结果集,数据库需要耗费大量存储空间,对数据库系统资源造成严重浪费。
发明内容
本发明提供一种数据库游标查询方法、装置、设备和存储介质,以实现游标操作的快速执行,减低查询结果集的存储空间,提高数据库的数据查询效率。
第一方面,本发明实施例提供了一种数据库游标查询方法,该方法包括:
根据查询语句获取查询结果,并将缓存中的查询结果提前返回;
根据返回的所述查询结果的缓存地址设置游标的游标结果集;
根据所述游标读取所述查询结果。
第二方面,本发明实施例提供了一种数据库游标查询装置,该装置包括:
数据查询模块,用于根据查询语句获取查询结果,并将缓存中的查询结果提前返回;
数据获取模块,根据返回的所述查询结果的缓存地址设置游标的游标结果集。
结果查询模块,根据所述游标读取所述查询结果。
第三方面,本发明实施例提供了一种设备,该设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例中任一所述的数据库游标查询方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的数据库游标查询方法。
本发明实施例,通过获取查询语句对应的查询结果,并将缓存中的查询结果提前返回,根据查询结果的缓存地址设置游标的游标结果集,基于游标读取查询结果,实现了数据库内游标查询操作,减少游标等待获取查询结果的时间,提高了游标查询效率,减少了数据库内查询结果占用的存储空间。
附图说明
图1是现有技术中游标的工作流程示例图;
图2是本发明实施例提供的一种游标工作流程示例图;
图3是本发明实施例一提供的一种数据库游标查询方法的流程图;
图4是本发明实施例二提供的一种数据库游标查询方法的流程图;
图5是本发明实施例二提供的一种游标查询的示例图;
图6是本发明实施例二提供的一种数据库游标查询方法的示例图;
图7是本发明实施例三提供的一种数据库查询装置的结构示意图;
图8是本发明实施例四提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构,此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
图1是现有技术中游标的工作流程示例图,参见图1,现有技术中,游标查询的处理过程包括打开游标,执行与游标关联的查询语句,获取到完整的查询结果集,并将获取到的完整查询结果集登记到游标的游标结果集。图2是本发明实施例提供的一种游标工作流程示例图,参见图2,本申请实施例,在打开游标时,游标直接返回下层数据缓存中的查询结果作为游标结果集,每当下层缓存获取到一批查询结果,就将查询结果返回给游标结果集,直到所需数据获取完毕或者查询语句的脚本执行完成。本发明实施例中提前获取的查询结果是查询结果集中的部分数据,游标结果集中的数据不断被新获取到的一批数据替换。在数据规模大的查询场景下,缩小了查询结果集的存储空间,无需等待查询到所有查询结果,减少了游标获取查询结果的等待时间,提高了数据查询效率。
实施例一
图3是本发明实施例一提供的一种数据库游标查询方法的流程图,本实施例可适用于数据库中通过游标获取查询结果的情况,该方法可以由数据库游标查询装置来执行,该装置可以采用硬件和/或软件的方式来实现,参见图3,本发明实施例提供的方法通常具体包括如下步骤:
步骤101、根据查询语句获取查询结果,并将缓存中的查询结果提前返回。
其中,查询语句是数据库查询数据表的结构化语句,具体可以是SQL查询语句,不同厂商数据库对应的查询语句的语法可以不同。查询结果可以是根据查询语句在数据库表中查询到的数据,查询结果可以由一条或者多条数据记录构成。
具体的,在游标查询之前,需要根据查询语句获取到查询结果,查询结果可以存储在缓存中,获取查询结果由于数据规模不同而缓存大小固定,获取到的查询结果可以是一次性获取,也可以是分批获取。
在本发明实施例中,基于查询语句在数据库中获取查询结果,由于缓存空间的限制,当查询结果的规模大于缓存空间时,查询结果需要分批存储到缓存中,根据查询语句获取的查询结果存储在缓存中,立即将缓存中查询结果提前返回,不等待查询语句的所有查询结果生成。可以理解的是,查询结果与缓存空间的大小关联,缓存中的查询结果可以是查询语句对应的所有查询结果,也可以是查询语句对应的部分查询结果。其中,缓存可以是临时存储查询结果的存储空间,缓存中的查询结果是查询语句的查询子计划之间传递的数据。
步骤102、根据返回的所述查询结果的缓存地址设置游标的游标结果集。
其中,缓存地址可以是查询结果中各行数据的存储地址,通过缓存地址可以直接获取到缓存中的查询结果。而游标是数据库中的一种数据操纵对象,游标与查询语句关联,游标可以对应于查询语句的查询结果,用于读取查询结果,游标中包括有游标结果集,游标结果集可以用于存储提取返回的查询结果,游标结果集具体可以是游标的结构体成员。
在本发明实施例中,将查询结果的缓存地址登记到游标的游标结果集中,游标根据登记的缓存地址获取对应的查询结果,例如,可以将游标的成员指针指向查询结果的缓存地址,游标可以根据该成员指针直接读取到缓存中的查询结果。示例性的,可以将查询结果中最低位的缓存地址存储到游标中,用于游标后续根据缓存地址读取查询结果。
步骤103、根据所述游标读取所述查询结果。
具体的,游标中已存储查询结果的缓存地址,游标根据存储的缓存地址读取缓存中的查询结果,例如,游标根据缓存地址读取查询结果,每进行一次读取,可以理解的是,游标可以一次读取1条或者多条查询结果,可以将游标的当前位置或者偏移对应增加1或者N,直到读取出缓存中所有的查询结果。若缓存中的查询结果全部读取后仍然不能满足指定数量时,查询语句继续获取新的查询结果存储到缓存中,重复执行步骤101到步骤103以获取到满足指定数量需求的查询结果。进一步的,由于在停止读取查询结果后,还可以清理游标所处的环境,释放占用的资源,减少数据的性能负载。
本发明实施例,通过查询语句获取查询结果,并将缓存中的查询结果提前返回,基于查询结果的缓存地址设置游标,通过游标读取各查询结果,实现了数据库中的游标查询,减少了查询结果的占用空间,降低了游标获取查询结果时的等待时长,提高了游标查询数据的获取效率。
实施例二
图4是本发明实施例二提供的一种数据库游标查询方法的流程图,本发明实施例是以上述实施例为基础的具体化,参见图4,本发明实施例提供的数据库游标查询方法包括如下步骤:
步骤201、根据查询语句获取查询结果,提前返回所述缓存中的查询结果。
在本发明实施例中,由于缓存空间限制,查询语句以批的形式分批获取查询结果,每批查询结果占据空间的大小可以小于或等于阈值空间的大小。虚拟机通过查询语句获取一批查询结果后,在生成结果数据集前,可以将缓存中的一批查询结果提前返回。
步骤202、根据虚拟机的信息确定查询语句是否完成查询。
其中,虚拟机的信息是表示查询语句是否执行完成的参数,当虚拟机在执行查询语句以获取查询结果时,若未全部执行完成,生成有标记信息,该标记信息用于表示查询语句未完成查询。
在本发明实施例中,获取虚拟机的信息,判断是否存在标记信息,若不存在可以确定查询语句完成查询,若存在,可以确定查询语句未完成查询。
步骤203、若是,则清除所述虚拟机内查询语句的查询环境,若否,则记录未完成标记,并保存所述虚拟机内查询语句的查询环境到游标。
其中,查询环境可以是查询语句进行数据查询的硬件环境和/或软件环境,在虚拟机环境中可以通过查询语句获取查询结果。未完成标记是标记查询语句是否执行完成的标识信息,例如,使用flag为1或者为0的方式进行标记,当标记flag为1时,表示查询语句未执行完成,当标记flag为0时,表示查询语句执行完成。
具体的,若查询语句完成了查询,不需要虚拟机继续执行查询语句获取查询结果,此时,可以将虚拟机内的查询环境清除,若查询语句未完成查询,可以未完成标记的形式保存未完成查询的信息,为了进一步提高游标获取查询结果的速度,可以将生成查询结果的虚拟环境保存到游标,具体可以将虚拟环境的相关信息保存到游标的成员信息中,等待后续过程中使用保存的虚拟环境查询数据。
步骤204、选择查询结果对应缓存地址中的目标地址。
其中,目标地址是用于在游标进行登记的信息,目标地址可以是查询结果在缓存地址中数值最小的地址、缓存地址中数值最大的地址或者是缓存地址中一个随机的地址。
在本发明实施例中,可以在查询结果对应的缓存地址中选择一个缓存地址作为目标地址,选择目标地址的方式可以是选择数值最小的缓存地址、数值最大的缓存地址,或者在返回查询结果的缓存地址随机选择一个作为目标地址。
步骤205、将目标地址设置为游标结果集的登记索引,其中,所述游标结果集的行数的初始值为0,每当获取到所述查询结果的缓存地址时,根据获取到缓存地址的数量更新所述游标结果集的行数。
其中,登记索引可以是游标的游标结果集内中存储目标地址的信息,该信息具体为缓存地址,可以为缓存的最大地址、最小地址或者是随机地址,登记索引位于游标的游标结果集,可以是游标的成员参数。而游标结果集的行数可以表示已经从缓存中提前返回的查询结果的数量,根据提前返回查询结果的数量增多,游标结果集的行数可以逐渐增长,游标结果集的行数初始状态为0,每获取到一批数据时,可以在现有游标结果集的行数的基础上累加上这批数据的行数作为新的游标结果集的行数,游标结果集的行数可以在游标中以成员参数的形式存在。
具体的,将游标的登记索引的指针指向目标地址对应的缓存空间,也就形成了游标结果集,游标中还可以记录有游标结果集的行数,每当获取到一批查询结果的缓存地址时,可以根据查询结果的缓存地址更新游标结果集的行数。
步骤206、根据登记索引读取缓存内的查询结果,根据每次读取查询的数量增加游标的偏移量。
其中,登记索引可以是游标中存储返回的查询结果的参数,登记索引具体可以是游标的成员参数,登记索引用于游标移动读取缓存中对应的查询结果,偏移量可以是游标中记录已读取查询结果数量的参数,偏移量根据游标读取查询结果的数量增多而增多。
在本发明实施例中,根据游标中的登记索引读取缓存中对应位置的查询结果,每读取到一个或多个查询结果,可以将游标的偏移量的取值对应增大或者减少,取值的改变数值大小可以与读取到的查询结果的数量对应,例如当游标一次读取一个查询结果时,游标的偏移量的取值可以对应增大1。游标通过登记索引中的缓存地址读取缓存中的查询结果。每次读取查询结果后,将游标偏移量和指定数量进行对比,当游标的偏移量等于指定数量时,进入步骤208,否则进入207。
步骤207、读取查询结果后若偏移量等于游标结果集的行数,则确定是否存在未完成标记,若不存在,则返回空,若存在,则返回步骤201获取新的查询结果进行读取。
其中,未完成标记可以是游标中表示查询语句是否查询完成的标记,未完成标记可以由执行查询语句的虚拟机环境的相关信息确定,游标结果集的行数可以表示提前从缓存中返回的查询结果的总数量。
具体的,当游标每次读取查询结果后,可以将游标结果集的行数与偏移量进行对比,当偏移量小于游标结果集的行数时,可以继续根据登记索引读取缓存内的查询结果,当偏移量等于游标结果集的行数时,可以判断游标中是否存在未完成标记,若存在,可以根据查询语句获取到新的查询结果,游标可以继续获取到新的查询结果,例如存在flag=1,可以根据查询语句继续获取新的查询结果,并存储到缓存,游标可以根据缓存中新的查询结果继续进行读取。若不存在,例如,flag=0,查询语句已经执行完毕,无法根据该查询语句获取到新的查询结果,则返回空表示无法获取到新的查询结果,例如,返回NULL等。
示例性的,图5是本发明实施例二提供的一种游标查询的示例图,参见图5,通过FETCH语句实现游标查询数据,通过游标将缓存中的查询结果读取完毕,FETCH每次从缓存读取数据,可以一次读一条或N条。当读取1条时,游标的偏移相应的增加1;当读取N条时,游标的偏移相应的增加N。例如,FETCH语句从缓存中逐条读取查询结果,每读取一条,游标的偏移相应增加1,直到缓存中所有查询结果读取完毕。游标中存在flag为1的标记,尚未完成对全部查询结果的读取,则找到挂起的查询环境,继续执行查询语句,获取下一批查询结果,重试FETCH语句。由于游标登记了nsql_ctx的缓存地址,也就是SQL查询语句在虚拟机的入口,可以由FETCH重启快速查询。等待查询结果再往上层操作符返回查询结果时,回到FETCH语句的逻辑继续执行查询结果的读取。
步骤208、读取查询结果后若偏移量等于所述查询结果的指定数量,则结束所述查询结果的读取。
其中,指定数量可以是需要读取查询结果的总数量,指定数量可以由用户设定。
在本发明实施例中,每当游标根据登记索引读取查询结果后,对游标的偏移量和指定数量进行对比,若当游标的偏移量等于查询结果的指定数量时,游标可以读取到足够数量的查询结果,此时可以结束查询结果的读取,若游标的偏移量小于查询结果的指定数量,游标尚未读取到足够数量的查询结果,且flag为1,则游标可以继续根据登记索引读取查询结果,若游标的偏移量小于查询结果的指定数量,游标尚未读取到足够数量的查询结果,且flag为0,则游标无法再获取到新的查询结果,那么游标读取完所有查询结果后结束查询结果的读取。
步骤209、确定查询语句缺少关闭语句时,清除游标;和/或确定出现异常错误时,清除游标。
在本发明实施例中,游标读取查询结果存在异常情况,当SQL查询语句不完整,缺少游标的关闭语句,游标查询完成后未进行关闭操作,造成资源泄漏,可以在获取到阈值数量的查询结果后关闭游标。当在游标查询执行的过程中出现错误,可以在消除执行环境时清除游标,其中,清除游标的方式可以包括清除游标的查询语句、清除SQL查询语句在虚拟机的入口以及释放游标的空间等。
本发明实施例,通过基于查询语句获取查询结果,并将缓存内的查询结果提前返回,基于虚拟机信息确定查询语句是否完成查询,若是则清除虚拟机内的查询环境,否则,记录未完成标记,保存虚拟机内的查询环境,选择查询结果对应缓存地址中的目标地址,根据目标地址设置游标的登记索引,每读取到查询结果后根据读取到的查询结果的数量增加游标的偏移量,若读取查询结果后偏离量等于游标结果集的行数,则确定是否存在未完成标记,若存在,则获取新的查询结果读取,否则,返回空,读取查询结果后偏移量等于查询结果的指定数量,结束读取查询结果,还对缺少关闭语句和出现错误的游标进行清除,实现了数据库内游标查询操作,减少游标等待获取查询结果的时间,提高了游标查询效率,减少了数据库内存储查询结果集的存储空间。
进一步的,在上述发明实施例的基础上,目标地址包括以下至少一种:
所述查询结果对应缓存地址中最小的缓存地址;所述查询结果对应缓存地址中最大的缓存地址;所述查询结果对应缓存地址中一个随机的地址。
在本发明实施例中,为了提高游标读取查询结果的速度,可以选择查询结果的缓存地址中最小的缓存地址或者最大的缓存地址作为目标地址,由目标地址进行自增或者自减的方式读取到其缓存地址处的查询结果,进一步的,目标地址还可以是查询结果缓存地址中一个随机的地址,游标可以通过该地址通过对应的随机读取方式读取查询结果。
进一步的,在上述发明实施例的基础上,所述获取新的查询语句进行读取,包括:
基于保存的所述虚拟机环境按照所述查询语句将新的查询结果存储到所述缓存;将所述缓存中的查询结果提前返回;根据所述查询结果的缓存地址重新设置所述游标的查询结果集,并根据所述游标读取所述查询结果。
在本发明实施例中,查询结果可以在虚拟机环境中分批查询获得,由于缓存空间限制,每次最多读取该缓存的空间大小对应的查询结果,查询语句获取查询结果和游标获取查询结果的过程可以交替进行,每获取到新的查询结果后,查询结果可以被存储到查询结果集,游标无需等待查询结果集存储所有的查询结果,直接根据各查询结果的缓存地址读取查询结果。当需要获取后续的查询结果时,虚拟机能够从中断点开始继续生成查询结果,在补充一定数量的查询结果后,根据新的查询结果的缓存地址设置游标的游标结果集,游标继续读取查询结果;通过若干次的“中断—继续”的循环获取到指定数量的查询结果。
示例性的,图6是本发明实施例二提供的一种数据库游标查询方法的示例图,参见图6,Nsql_ctx操作符表示记录查询sql操作符的命令和资源。在原先如图6(a)示出的常规游标方法实现中,一个查询语句的计划如下所示:
explain select c1from test;
1#NSET2:[0,1,12]
2#PRJT2:[0,1,12];exp_num(2),is_atom(FALSE)
3#CSCN2:[0,1,12];INDEX33555442(TEST)
其中,NSET是生成查询结果集的计划操作符。在NSET的层计划操作符中,获取自下层操作符的数据缓存。该操作符将查询上来的结果保存查询结果集,在获取到所有查询结果后,将查询结果返回上层操作符;Nsql_ctx就是NSET的上层操作符,从下向上返回时才会进入该操作符节点,进入Nsql_ctx即表示下层查询已经结束,查询所使用的资源通过Nsql_ctx释放。NSET收到孩子发来的数据缓存,将数据缓存中的查询结果存储到查询结果集中。然后继续通过下层操作符获取后继的查询结果。直到最后NSET将游标结果集关联到全部查询结果的查询结果集。而本申请的技术方案,参见图6(b),NSET直接将游标结果集关联本批次获得数据后返回,同时对游标结果集进行标记,Nsql_ctx则检查游标结果集是否标记为全部完成(即flag=0)。如果是全部完成,清理游标中SQL查询语句的执行环境;否则,直接返回后继续获取下一批数据。这就实现了在生成全部游标结果集的过程中,在结果集部分生成后,虚拟机能够中断结果集的生成过程,执行后续操作。游标获取查询结果时,本发明实施的方法通过获得一批查询结果就可以将结果提前返回到查询结果集,不用等到所有N批次的查询结果全部查询完成,并且不清理查询环境。
实施例三
图7是本发明实施例三提供的一种数据库查询装置的结构示意图,可执行本发明任意实施例所提供的数据库查询方法,具备执行方法相应的功能模块和有益效果。该装置可以由软件和/或硬件实现,具体包括:数据查询模块301、游标设置模块302和结果查询模块303。
数据查询模块301,用于根据查询语句获取查询结果,并将缓存中的查询结果提前返回。
游标设置模块302,根据返回的所述查询结果的缓存地址设置游标的游标结果集。
结果查询模块303,根据所述游标读取所述查询结果。
本发明实施例,数据查询模块通过查询语句获取查询结果,并将缓存中的查询结果提前返回,游标设置模基于查询结果的缓存地址设置游标的游标结果集,结果查询模块通过游标读取各查询结果,实现了数据库中的游标查询,减少了查询结果的占用空间,降低了游标获取查询结果时的等待时长,提高了游标查询数据的获取效率。
进一步的,在上述发明实施例的基础上,数据查询模块301包括:
地址返回单元,用于提前返回所述缓存中的查询结果。
虚拟机处理单元,用于根据虚拟机的信息确定查询语句是否完成查询;若是,则清除所述虚拟机内查询语句的查询环境,若否,则记录未完成标记,并保存所述虚拟机内查询语句的查询环境到游标。
进一步的,在上述发明实施例的基础上,游标设置模块302包括:
目标选择单元,用于选择所述查询结果对应缓存地址中的目标地址。
登记设置单元,用于将所述目标地址设置为所述游标结果集的登记索引,其中,其中,所述游标结果集的行数的初始值为0,每当获取到所述查询结果的缓存地址时,根据获取到的缓存地址的数量更新所述游标结果集的行数。
进一步的,在上发明实施例的基础上,目标选择单元中目标地址包括以下至少一种:所述查询结果对应缓存地址中最小的缓存地址;所述查询结果对应缓存地址中最大的缓存地址;所述查询结果对应缓存地址中一个随机的地址。
进一步的,在上述发明实施例的基础上,结果查询模块303包括:
结果读取单元,用于根据所述登记索引读取所述缓存内的所述查询结果,根据每次读取的查询结果的数量增加所述游标的偏移量。
结果获取单元,用于读取查询结果后若偏移量等于所述游标结果集的行数,则确定是否存在未完成标记,若不存在,则返回空,若存在,则获取新的查询结果进行读取。
读取结束单元,用于读取查询结果后若偏移量等于所述查询结果的指定数量,则结束所述查询结果的读取。
进一步的,在上述发明实施例的基础上,结果获取单元具体用于:
基于保存的所述虚拟机环境按照所述查询语句将新的查询结果存储到所述缓存;将缓存中的查询结果提前返回;根据所述查询结果的缓存地址重新设置所述游标的游标结果集,并根据所述游标读取所述查询结果。
进一步的,在上述发明实施例的基础上,还包括:
异常处理模块,用于确定所述查询语句缺少关闭语句时,清除所述游标;和/或确定出现异常错误时,清除所述游标。
实施例四
图8是本发明实施例四提供的一种设备的结构示意图,如图8所示,该设备包括处理器40、存储器41、输入装置42和输出装置43;设备中处理器40的数量可以是一个或多个,图8中以一个处理器40为例;设备中的处理器40、存储器41、输入装置42和输出装置43可以通过总线或其他方式连接,图8中以通过总线连接为例。
存储器41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据库游标查询方法对应的程序模块(例如,数据库查询装置中的数据查询模块301、游标设置模块302和结果查询模块303)。处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据库游标查询方法。
存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置42可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置43可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据库游标查询方法,该方法包括:
根据查询语句获取查询结果,并将缓存中的查询结果提前返回;
根据返回的所述查询结果的缓存地址设置游标的游标结果集;
根据所述游标读取所述查询结果。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据库游标查询方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述数据库游标查询装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种数据库游标查询方法,其特征在于,所述方法包括:
根据查询语句获取查询结果,并将缓存中的查询结果提前返回;
根据返回的所述查询结果的缓存地址设置游标的游标结果集;
根据所述游标读取所述查询结果。
2.根据权利要求1所述的方法,其特征在于,所述将缓存中的查询结果提前返回,包括:
提前返回所述缓存中的查询结果;
根据虚拟机的信息确定查询语句是否完成查询;
若是,则清除所述虚拟机内查询语句的查询环境,若否,则记录未完成标记,并保存所述虚拟机内查询语句的查询环境到游标。
3.根据权利要求2所述的方法,其特征在于,所述根据所述查询结果的缓存地址设置游标的游标结果集,包括:
选择所述查询结果对应缓存地址中的目标地址;
将所述目标地址设置为所述游标结果集的登记索引;
其中,所述游标结果集的行数的初始值为0,每当获取到所述查询结果的缓存地址时,根据获取到的缓存地址的数量更新所述游标结果集的行数。
4.根据权利要求3所述的方法,其特征在于,所述目标地址包括以下至少一种:
所述查询结果对应缓存地址中最小的缓存地址;
所述查询结果对应缓存地址中最大的缓存地址;
所述查询结果对应缓存地址中一个随机的地址。
5.根据权利要求3所述的方法,其特征在于,所述根据所述游标读取所述查询结果,包括:
根据所述登记索引读取所述缓存内的所述查询结果,根据每次读取的查询结果的数量增加所述游标的偏移量;
读取查询结果后若偏移量等于所述游标结果集的行数,则确定是否存在未完成标记,若不存在,则返回空,若存在,则获取新的查询结果进行读取;
读取查询结果后若偏移量等于所述查询结果的指定数量,则结束所述查询结果的读取。
6.根据权利要求5所述的方法,其特征在于,所述获取新的查询结果进行读取,包括:
基于保存的所述虚拟机环境按照所述查询语句将新的查询结果存储到所述缓存;
将缓存中的查询结果提前返回;
根据所述查询结果的缓存地址重新设置所述游标的游标结果集,并根据所述游标读取所述查询结果。
7.根据权利要求1-6中任一所述的方法,其特征在于,还包括:
确定所述查询语句缺少关闭语句时,清除所述游标;和/或
确定出现异常错误时,清除所述游标。
8.一种数据库游标查询装置,其特征在于,所述装置包括:
数据查询模块,用于根据查询语句获取查询结果,并将缓存中的查询结果提前返回;
游标设置模块,根据所述查询结果的缓存地址设置游标的游标结果集;
结果查询模块,根据所述游标读取所述查询结果。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的数据库游标查询方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的数据库游标查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010529716.6A CN111737295B (zh) | 2020-06-11 | 2020-06-11 | 数据库游标查询方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010529716.6A CN111737295B (zh) | 2020-06-11 | 2020-06-11 | 数据库游标查询方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111737295A CN111737295A (zh) | 2020-10-02 |
CN111737295B true CN111737295B (zh) | 2023-02-03 |
Family
ID=72648798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010529716.6A Active CN111737295B (zh) | 2020-06-11 | 2020-06-11 | 数据库游标查询方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111737295B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112765215A (zh) * | 2021-01-19 | 2021-05-07 | 上海幻电信息科技有限公司 | 数据查询方法、装置 |
CN115145956A (zh) * | 2021-03-30 | 2022-10-04 | 北京字节跳动网络技术有限公司 | 数据获取方法、装置、电子设备及计算机可读存储介质 |
CN113360495B (zh) * | 2021-04-20 | 2023-02-24 | 山东英信计算机技术有限公司 | 一种数据库查询中断的恢复方法、装置、设备及可读介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6466933B1 (en) * | 1999-09-21 | 2002-10-15 | International Business Machines Corporation | Delayed delivery of query results or other data from a federated server to a federated client until such information is needed |
US7849109B1 (en) * | 2004-07-30 | 2010-12-07 | Microsoft Corporation | Use of server processing of temporary results for stateless paging over arbitrary user queries |
US8260769B1 (en) * | 2011-05-04 | 2012-09-04 | Google Inc. | Coordinating different search queries using a translated query cursor |
CN103207839A (zh) * | 2012-01-17 | 2013-07-17 | 国际商业机器公司 | 存储的高速缓存内的轨道清除的高速缓存管理方法和系统 |
CN104252501A (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 一种执行数据库操作命令的计算设备和方法 |
CN104504001A (zh) * | 2014-12-04 | 2015-04-08 | 西北工业大学 | 面向海量分布式关系数据库的游标构造方法 |
CN104850507A (zh) * | 2014-02-18 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 一种数据缓存方法和数据缓存装置 |
CN105574217A (zh) * | 2016-03-16 | 2016-05-11 | 中国联合网络通信集团有限公司 | 分布式关系型数据库的数据同步方法和装置 |
CN106484711A (zh) * | 2015-08-26 | 2017-03-08 | 北京国双科技有限公司 | 数据遍历方法及装置 |
CN107145582A (zh) * | 2017-05-09 | 2017-09-08 | 深圳Tcl新技术有限公司 | 数据库游标的控制方法与数据库系统 |
CN110858199A (zh) * | 2018-08-08 | 2020-03-03 | 北京京东尚科信息技术有限公司 | 一种单据数据分布式计算的方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11615115B2 (en) * | 2010-12-23 | 2023-03-28 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10303786B2 (en) * | 2015-08-05 | 2019-05-28 | International Business Machines Corporation | Retrieving and displaying data from a columnar database |
US10783142B2 (en) * | 2015-10-23 | 2020-09-22 | Oracle International Corporation | Efficient data retrieval in staged use of in-memory cursor duration temporary tables |
US11599541B2 (en) * | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
-
2020
- 2020-06-11 CN CN202010529716.6A patent/CN111737295B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6466933B1 (en) * | 1999-09-21 | 2002-10-15 | International Business Machines Corporation | Delayed delivery of query results or other data from a federated server to a federated client until such information is needed |
US7849109B1 (en) * | 2004-07-30 | 2010-12-07 | Microsoft Corporation | Use of server processing of temporary results for stateless paging over arbitrary user queries |
US8260769B1 (en) * | 2011-05-04 | 2012-09-04 | Google Inc. | Coordinating different search queries using a translated query cursor |
CN103207839A (zh) * | 2012-01-17 | 2013-07-17 | 国际商业机器公司 | 存储的高速缓存内的轨道清除的高速缓存管理方法和系统 |
CN104252501A (zh) * | 2013-06-29 | 2014-12-31 | 华为技术有限公司 | 一种执行数据库操作命令的计算设备和方法 |
CN104850507A (zh) * | 2014-02-18 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 一种数据缓存方法和数据缓存装置 |
CN104504001A (zh) * | 2014-12-04 | 2015-04-08 | 西北工业大学 | 面向海量分布式关系数据库的游标构造方法 |
CN106484711A (zh) * | 2015-08-26 | 2017-03-08 | 北京国双科技有限公司 | 数据遍历方法及装置 |
CN105574217A (zh) * | 2016-03-16 | 2016-05-11 | 中国联合网络通信集团有限公司 | 分布式关系型数据库的数据同步方法和装置 |
CN107145582A (zh) * | 2017-05-09 | 2017-09-08 | 深圳Tcl新技术有限公司 | 数据库游标的控制方法与数据库系统 |
CN110858199A (zh) * | 2018-08-08 | 2020-03-03 | 北京京东尚科信息技术有限公司 | 一种单据数据分布式计算的方法和装置 |
Non-Patent Citations (3)
Title |
---|
"SAP HANA Distributed In-Memory Database System:Transaction,Session,and Metadata Management";Lee J;《IEEE 29th International Conference on Data Engineering》;20131231;第1165-1173页 * |
"利用 PRO* C 接口实现 ORACLE 数据库查询和统计";曾红科;《水电站设计》;19980630;第47-50页 * |
一种面向海量分布式数据库的游标构造方法;刘文洁等;《西北工业大学学报》;20170815(第04期);第173-178页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111737295A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111737295B (zh) | 数据库游标查询方法、装置、设备和存储介质 | |
US7284238B2 (en) | Multithread tracing method and apparatus | |
US11334474B2 (en) | Fast change impact analysis tool for large-scale software systems | |
CN108255620B (zh) | 一种业务逻辑处理方法、装置、业务服务器及系统 | |
JPH0810440B2 (ja) | アプリケーション イベント収集方法 | |
JP6982049B2 (ja) | インデックスを管理するための方法、装置、設備及び記憶媒体 | |
CN109656950B (zh) | 递归查询方法、装置、服务器及存储介质 | |
US20200364183A1 (en) | Device and method for managing ledger data on blockchain | |
CN110955598A (zh) | 一种内核态程序的断点处理方法及装置 | |
CN114328612A (zh) | 查询优化器的数据处理方法、装置及电子设备 | |
CN111858607A (zh) | 数据处理方法、装置、电子设备和计算机可读介质 | |
CN111078671A (zh) | 数据表字段的修改方法、装置、设备和介质 | |
CN116340318A (zh) | 一种二级索引记录处理方法、装置、设备及存储介质 | |
US11157506B2 (en) | Multiform persistence abstraction | |
US20120221512A1 (en) | Dynamic database dump | |
CN106776704A (zh) | 统计信息收集方法和装置 | |
JP2002342403A (ja) | フォールスパス検出装置、フォールスパス検出方法およびそのプログラム | |
CN113672496A (zh) | 一种基于余弦相似度的测试方法及系统 | |
CN112181796A (zh) | 信息采集方法、装置、服务器及存储介质 | |
CN117909301B (zh) | 基于索引的对象查询方法、装置、设备及介质 | |
CN109325031B (zh) | 一种数据统计方法、装置、设备和存储介质 | |
US11940966B2 (en) | Method, apparatus, and system for estimating database management system performance | |
CN114116188A (zh) | 一种数据存储方法及其设备 | |
CN114253817A (zh) | 数据库的性能分析方法、装置、电子设备和介质 | |
CN117130937A (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 |