CN115809268B - 一种基于分片索引的自适应查询方法和装置 - Google Patents

一种基于分片索引的自适应查询方法和装置 Download PDF

Info

Publication number
CN115809268B
CN115809268B CN202211475025.8A CN202211475025A CN115809268B CN 115809268 B CN115809268 B CN 115809268B CN 202211475025 A CN202211475025 A CN 202211475025A CN 115809268 B CN115809268 B CN 115809268B
Authority
CN
China
Prior art keywords
data
index
partition
data partitions
partitions
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
Application number
CN202211475025.8A
Other languages
English (en)
Other versions
CN115809268A (zh
Inventor
陈志标
徐晓锋
化明虎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Institute of Computing Sciences
Original Assignee
Shenzhen Institute of Computing Sciences
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Institute of Computing Sciences filed Critical Shenzhen Institute of Computing Sciences
Priority to CN202211475025.8A priority Critical patent/CN115809268B/zh
Publication of CN115809268A publication Critical patent/CN115809268A/zh
Application granted granted Critical
Publication of CN115809268B publication Critical patent/CN115809268B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请提供了一种基于分片索引的自适应查询方法和装置,用于预设结构化查询语言语句在数据库中动态选择索引进行数据查询,所述方法包括:依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区;依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;依据所述执行计划在所述目标数据分区中进行数据查询。提高实时/准实时数据仓库系统中数据加载和使用同时进行时的查询访问效率;最大程度提升查询速度。

Description

一种基于分片索引的自适应查询方法和装置
技术领域
本申请涉及数据查询处理领域,特别是一种基于分片索引的自适应查询方法和装置。
背景技术
传统型数据库/数据仓库中,数据大多采用非实时一次性ETL(Extract-Transform-Load,数据仓库技术)的数据加载方式,在加载过程中,In-Flight数据是不能访问的,要完全加载准备完毕后才可以访问,这包括后续查询会使用的索引。
现有技术方案包括传统索引方案、基于历史表的技术以及物化视图。
在现有技术中,维护或创建过程时,索引无法被使用;且数据较少更新和维护,物化视图在维护过程不可使用;传统数据库在索引创建过程中是无法使用索引的,通常索引创建是非常耗时的操作;对于应用要求越来越迫切的实时/准实时数据仓库系统,数据的加载和访问需要同时支持,如果加载过程中,索引等数据加速结构不可以使用,会极大的降低查询的效率。
发明内容
鉴于所述问题,提出了本申请以便提供克服所述问题或者至少部分地解决所述问题的一种基于分片索引的自适应查询方法和装置,包括:
一种基于分片索引的自适应查询方法,用于预设结构化查询语言语句在数据库中动态选择索引进行数据查询,所述方法包括:
依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;
依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;
依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;
依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;
依据所述执行计划在所述目标数据分区中进行数据查询。
进一步地,所述依据所述数据库内的数据表生成若干个数据分区的步骤,包括:
在所述数据表中获取分区列表;
依据所述分区列表生成若干个所述数据分区。
进一步地,所述通过若干个所述数据分区构建对应于若干个所述数据分区的索引的步骤,包括:
确定若干个所述数据分区是否有效;
当若干个所述数据分区均有效时,则获取若干个所述数据分区内的所有数据;
对所述所有数据中的每一条数据构建对应的所述索引。
进一步地,所述依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息的步骤,包括:
确定对应于所述索引的索引分区状态表;
依据所述索引分区状态表生成对应于若干个所述数据分区的若干个所述索引状态信息。
进一步地,所述依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建的步骤,包括:
依据若干个所述索引状态信息在若干个所述数据分区确定所述索引状态信息为所述已创建的所有数据分区;
在所述所有数据分区中通过所述预设结构化查询语言语句确定所述目标数据分区。
进一步地,所述在所述所有数据分区中通过所述预设结构化查询语言语句确定所述目标数据分区的步骤,包括:
确定所述预设结构化查询语言语句在所述数据库是否存在查询计划;
当所述预设结构化查询语言语句在所述数据库不存在所述查询计划时,则对所述预设结构化查询语言语句进行解析生成特征信息;
在所述所有数据分区中依据所述特征信息确定所述目标数据分区。
进一步地,所述依据所述执行计划在所述目标数据分区中进行数据查询的步骤,包括:
依据所述执行计划和所述目标数据分区确定访问路径;
依据所述访问路径进行数据查询。
本发明实施例还提供了一种基于分片索引的自适应查询优化装置,用于预设结构化查询语言语句在数据库中动态选择索引进行数据查询,所述装置包括:
构建模块,用于依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;
第一确定模块,用于依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;
第二确定模块,用于依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;
生成模块,用于依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;
查询模块,用于依据所述执行计划在所述目标数据分区中进行数据查询。
本发明实施例还提供了一种设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的一种基于分片索引的自适应查询方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的一种基于分片索引的自适应查询方法的步骤。
本申请具有以下优点:
在本申请的实施例中,相对于现有技术中的加载过程中,索引等数据加速结构不可以使用的问题,本申请提供了依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息,依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划的解决方案,具体为:依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;依据所述执行计划在所述目标数据分区中进行数据查询。通过执行计划解决了加载过程中,索引等数据加速结构不可以使用的问题达到了分片索引技术会在维护索引的同时,记录表的每个数据分区上索引维护状态,对于已经维护完毕索引的数据分区,状态上设置索引维护状态为完成,进行维护和尚未维护的状态,扫描数据时对于正在维护或者尚未维护索引的数据分区,采用动态扫描分区的方式,通过同时实现索引和表分区扫描;
对于查询,最大程度上利用索引的能力,同时又不影响数据加载索引维护任务的进行;提高实时/准实时数据仓库系统中,数据加载和使用同时进行时的查询访问效率;在索引创建过程中,使用分片索引加速功能将普通查询速度提升几倍到几万倍不等;创建索引的过程中可以使用索引,不需要等待索引创建完毕,最大程度提升查询速度;依次对多个数据分区建立索引,根据数据分区的索引状态信息选择访问路径;对已完成索引创建的分区使用索引查询检索数据;对创建中或未创建索引的分区不使用索引检索;也可动态对分区选择索引查询。
附图说明
为了更清楚地说明本申请的技术方案,下面将对本申请的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的一种基于分片索引的自适应查询方法的步骤流程图;
图2是本申请一实施例提供的一种基于分片索引的自适应查询优化装置的结构框图;
图3是本发明一实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的所述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
发明人通过分析现有技术发现:
传统索引方案:索引创建和维护,做为一个原子操作进行,在创建和维护过程中,索引是无法被使用的,传统的方案,在这个过程中相当于没有索引的存在,查询只能采用无索引的访问路径。
基于历史表的技术:传统数据仓库系统中,采用历史表的方案,对于已经准备好数据的历史表,数据较少更新与维护,相对热的短时数据,放在不同的表中,通过业务层结构化查询语言语句联合的方式,将同时查询热数据分区与历史数据分区。来实现历史数据的查询,依赖业务层的改造来实现。
物化视图:物化视图的加速手段同样依赖物化视图的更新,一般针对不严格要求数据实时查询的场景。物化视图在维护期间,同样也是不可使用的状态。
发明人针对现有技术存在的问题提供了一种基于分片索引的自适应查询方法,其相较于传统索引,分片索引技术会在维护索引的同时,记录表的每个分区上索引维护状态,对于已经维护完毕索引的分区,状态上设置索引维护状态为完成,进行维护和尚未维护的状态,扫描数据时对于正在维护或者尚未维护索引的分区,采用动态扫描分区的方式,通过同时实现索引和表分区扫描,对于查询,最大程度上利用索引的能力,同时又不影响数据加载索引维护任务的进行。
具体如下:
参照图1,示出了本申请一实施例提供的一种基于分片索引的自适应查询方法的步骤流程图;
一种基于分片索引的自适应查询方法,用于预设结构化查询语言语句在数据库中动态选择索引进行数据查询,所述方法包括:
S110、依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;
S120、依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;
S130、依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;
S140、依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;
S150、依据所述执行计划在所述目标数据分区中进行数据查询。
在本申请的实施例中,相对于现有技术中的加载过程中,索引等数据加速结构不可以使用的问题,本申请提供了依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息,依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划的解决方案,具体为:依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;依据所述执行计划在所述目标数据分区中进行数据查询。通过执行计划解决了加载过程中,索引等数据加速结构不可以使用的问题达到了分片索引技术会在维护索引的同时,记录表的每个数据分区上索引维护状态,对于已经维护完毕索引的数据分区,状态上设置索引维护状态为完成,进行维护和尚未维护的状态,扫描数据时对于正在维护或者尚未维护索引的数据分区,采用动态扫描分区的方式,通过同时实现索引和表分区扫描;
对于查询,最大程度上利用索引的能力,同时又不影响数据加载索引维护任务的进行;提高实时/准实时数据仓库系统中,数据加载和使用同时进行时的查询访问效率;在索引创建过程中,使用分片索引加速功能将普通查询速度提升几倍到几万倍不等;创建索引的过程中可以使用索引,不需要等待索引创建完毕,最大程度提升查询速度;依次对多个数据分区建立索引,根据数据分区的索引状态信息选择访问路径;对已完成索引创建的分区使用索引查询检索数据;对创建中或未创建索引的分区不使用索引检索;也可动态对分区选择索引查询。
下面,将对本示例性实施例中一种基于分片索引的自适应查询方法作进一步地说明。
在本发明一实施例中,依据所述数据库内的数据表生成若干个数据分区;并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;其中,对数据表创建特定索引,以及通过若干个所述数据分区,分别构建这些分区的索引信息。
在本发明一实施例中,依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;其中,分区的索引信息构建过程中,维护该分区对于该索引的索引状态信息。
在本发明一实施例中,依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区。
在本发明一实施例中,依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划,即通过执行计划对已创建索引对应的数据分区创建索引访问路径。
在本发明一实施例中,依据所述执行计划在所述目标数据分区中进行数据查询,即对已创建索引的数据分区进行索引访问。
如所述步骤S110所述,依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引。
在本发明一实施例中,可以结合下列描述进一步说明步骤S110所述“依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引”的具体过程。
如下列步骤所述,
S11010、在所述数据表中获取分区列表;
S11011、依据所述分区列表生成若干个所述数据分区。
需要说明的是,数据分区:数据库根据特定的数据列,将数据切分在不同的存储区域内,或切分到不同的数据库节点上。索引:索引是一种快速的数据检索方法,根据指定的值,或者指定的值范围,能够直接定位到具体的数据,而不用把这个数据扫描一遍筛选。
需要说明的是,通过执行索引创建命令;更新SQL查询计划缓存中,所有含数据表的查询计划,标记数据表的索引可用。也可根据数据库配置,直接删除查询缓存中含数据表所有的查询计划。
作为一种示例,通过数据表得到分区列表;依据分区列表进行分区生成若干个数据分区。
作为一种示例,创建索引时,读取数据表中的分区列表,获取每个分区的分区信息,选择一个分区或多个分区即若干个数据分区(并行情况下),读取若干个数据分区下一个或多个的存储位置信息。
在一具体实现中,例如销售信息表即数据表,可在单节点数据库上根据月份建立12个数据分区,也可在多节点数据库集群中按照月份建立12个数据分区。
如所述步骤S110所述,依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引。
在本发明一实施例中,可以结合下列描述进一步说明步骤S110所述“依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引”的具体过程。
如下列步骤所述,
S11020、确定若干个所述数据分区是否有效;
S11021、当若干个所述数据分区均有效时,则获取若干个所述数据分区内的所有数据;
S11022、对所述所有数据中的每一条数据构建对应的所述索引。
需要说明的是,检查若干个数据分区是否有效,即所有数据分区是否已遍历加载完毕;其中,数据分区对应分区信息会存放在链表或数组内,逐个遍历,遍历过程会记录当前的遍历索引值,如果遍历索引值超出了链表或数组元素的个数,那么该索引代表的数据分区就是无效分区;如果已遍历加载完毕,则获取若干个数据分区内每一个数据分区的所有数据。
作为一种示例,确定当前数据分区是否有效,当前数据分区有效时,则在当前数据分区内获取对应于当前数据分区内的所有当前数据,对所有当前数据中的每一条数据建立对应的索引。
在一具体实现中,数据和数据类型是用户自定定义在数据表里面的。类似于excel表格,用户定义了列名,每行写入了数据,索引建立过程是从头逐行读取数据创建的。
如所述步骤S120所述,依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息。
在本发明一实施例中,可以结合下列描述进一步说明步骤S120所述“依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息”的具体过程。
如下列步骤所述,
S1201、确定对应于所述索引的索引分区状态表;
S1202、依据所述索引分区状态表生成对应于若干个所述数据分区的若干个所述索引状态信息。
需要说明的是,在某一数据分区内的所有数据都建立索引后,在索引分区状态表里,更新对应于某一数据分区的索引状态信息即维护状态,将维护状态置为已完成维护即已创建;当某一数据分区内的所有数据还在建立索引时,在索引分区状态表里,更新对应于某一数据分区的索引状态信息即维护状态,将维护状态置为进行维护即正在创建;当某一数据分区内的所有数据未建立索引时,在索引分区状态表里,更新对应于某一数据分区的索引状态信息即维护状态,将维护状态置为尚未维护即未创建。
作为一种示例,索引集合中的每一个索引都有与之对应的一个索引状态信息,通过索引分区状态表可以得知索引的具体索引状态信息;在后续数据查询过程中,通过索引状态信息确定索引是否能够使用,对于不能使用的索引,使用其他方法进行数据查询,在一具体实施例中,其他方法包括表扫描查询。
如所述步骤S130所述,所述依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建。
在本发明一实施例中,可以结合下列描述进一步说明步骤S130所述“所述依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建”的具体过程。
如下列步骤所述,
S1301、依据若干个所述索引状态信息在若干个所述数据分区确定所述索引状态信息为所述已创建的所有数据分区;
S1302、在所述所有数据分区中通过所述预设结构化查询语言语句确定所述目标数据分区。
需要说明的是,本申请中提及的索引状态信息包括但不限于已创建、正在创建和未创建,根据具体实施例还可以包括其他信息用于表明索引状态信息。
作为一种示例,通过在若干个索引状态信息在若干个数据分区中将索引状态信息为已创建的所有数据分区筛选得到,再通过预设结构化查询语言语句在通过筛选得到的所有数据分区中确定目标数据分区。
如所述步骤S1302所述,在所述所有数据分区中通过所述预设结构化查询语言语句确定所述目标数据分区。
在本发明一实施例中,可以结合下列描述进一步说明步骤S1302所述“在所述所有数据分区中通过所述预设结构化查询语言语句确定所述目标数据分区”的具体过程。
如下列步骤所述,
S13021、确定所述预设结构化查询语言语句在所述数据库是否存在查询计划;
S13022、当所述预设结构化查询语言语句在所述数据库不存在所述查询计划时,则对所述预设结构化查询语言语句进行解析生成特征信息;
S13023、在所述所有数据分区中依据所述特征信息确定所述目标数据分区。
需要说明的是,在数据库中确定预设结构化语言语句是否存在对应的查询计划,若不存在,则需要对预设结构化语言语句进行解析,提取预设结构化语言语句的文本特征即特征信息,在所有数据分区中依据特征信息确定目标数据分区。
作为一种示例,在提取预设结构化语言语句的文本特征即特征信息时,对文本特征即特征信息进行语义分析,通过语义分析得到分析信息,再由从所有数据分区中依据分析信息确定目标数据分区。
在一具体实现中,连接数据库,输入一条预设结构化查询语言语句;数据库接收到预设结构化查询语言语句,判断预设结构化查询语言语句是否有查询计划缓存(对预设结构化查询语言语句建立缓存是所有数据库的标准做法。一般是通过将预设结构化查询语言语句文本计算出一个ID值,通过ID值检索是否已产生了语法树,如果有现成的语法树,则不用重复解析预设结构化查询语言语句,从而提升查询性能)。
如所述步骤S150所述,依据所述执行计划在所述目标数据分区中进行数据查询。
在本发明一实施例中,可以结合下列描述进一步说明步骤S150所述“依据所述执行计划在所述目标数据分区中进行数据查询”的具体过程。
如下列步骤所述,
S1501、依据所述执行计划和所述目标数据分区确定访问路径;
S1502、依据所述访问路径进行数据查询。
需要说明的是,根据执行计划,开始执行预设结构化查询语言语句,在执行预设结构化查询语言语句时,在目标数据分区通过执行计划得到访问路径,通过访问路径进行数据查询;在完整预设结构化查询语言语句查询后,则执行完毕。
作为一种示例,设有12个数据分区,创建计划时候只有第一个数据分区对应的索引创建成功,其余数据分区正在创建中或未创建时,对于已构建索引的第一个数据分区,通过预设结构化查询语言语句在第一个数据分区内使用索引查询;对于其余数据分区内需要查询时,则通过表扫描查询;对于多个已构建索引的数据分区,依据预设结构化查询语言语句确定对应的目标数据分区,在目标数据分区使用索引查询,剩余数据分区处于正在构建和未构建时,则通过表扫描查询。
实施例一
例如销售数据表,可根据月份,将数据分为12个数据分区存放,在索引创建的时候先创建1月数据分区的索引,创建完维护一个状态标识当前分区已创建索引即索引状态信息。当用户查询1月份数据时候,就可以使用索引状态信息为已创建的索引访问数据;当用户查询2月份数据,因为未创建索引,将使用表扫描查询访问数据;当用户同时查询1月份和2月份数据时,根据查询逻辑和索引维护信息即索引状态信息,对1月份的数据进行索引查询,对2月份的数据进行表扫描查询。
而在传统数据库,数据分成12个数据分区,那么在12个分区未创建完成之前,是不能使用索引查询的。因此,即便是1月份的数据建立索引,查询时候也只能使用表扫描查询,这样极大降低了数据检索速度。
通过本发明提供的一种基于分片索引的自适应查询方法中,在索引维护过程中,通过索引状态信息的维护,使得执行器和优化器能够感知特定的分区已完成索引创建,使得预设结构化查询语言语句在执行过程中使用索引来访问数据。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图2,示出了本申请一实施例提供的一种基于分片索引的自适应查询优化装置的结构框图;
一种基于分片索引的自适应查询优化装置,用于预设结构化查询语言语句在数据库中动态选择索引进行数据查询,所述装置包括:
构建模块210,用于依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;
第一确定模块220,用于依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;
第二确定模块230,用于依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;
生成模块240,用于依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;
查询模块250,用于依据所述执行计划在所述目标数据分区中进行数据查询。
在本发明一实施例中,所述构建模块210,包括:
第一获取子模块,用于在所述数据表中获取分区列表;
第一生成子模块,用于依据所述分区列表生成若干个所述数据分区。
在本发明一实施例中,所述构建模块210,包括:
第一确定子模块,用于确定若干个所述数据分区是否有效;
第二获取子模块,用于当若干个所述数据分区均有效时,则获取若干个所述数据分区内的所有数据;
第一构建子模块,用于对所述所有数据中的每一条数据构建对应的所述索引。
在本发明一实施例中,所述第一确定模块220,包括:
第二确定子模块,用于确定对应于所述索引的索引分区状态表;
第二生成子模块,用于依据所述索引分区状态表生成对应于若干个所述数据分区的若干个所述索引状态信息。
在本发明一实施例中,所述第二确定模块230,包括:
第三确定子模块,用于依据若干个所述索引状态信息在若干个所述数据分区确定所述索引状态信息为所述已创建的所有数据分区;
第四确定子模块,用于在所述所有数据分区中通过所述预设结构化查询语言语句确定所述目标数据分区。
在本发明一实施例中,所述第四确定子模块,包括:
第一确定单元,用于确定所述预设结构化查询语言语句在所述数据库是否存在查询计划;
第一生成单元,用于当所述预设结构化查询语言语句在所述数据库不存在所述查询计划时,则对所述预设结构化查询语言语句进行解析生成特征信息;
第二确定单元,用于在所述所有数据分区中依据所述特征信息确定所述目标数据分区。
在本发明一实施例中,所述查询模块250,包括:
第五确定子模块,用于依据所述执行计划和所述目标数据分区确定访问路径;
查询子模块,用于依据所述访问路径进行数据查询。
参照图3,示出了本发明的一种基于分片索引的自适应查询方法的计算机设备,具体可以包括如下:
上述计算机设备12以通用计算设备的形式表现,计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线18结构中的一种或多种,包括存储器总线18或者存储器控制器,外围总线18,图形加速端口,处理器或者使用多种总线18结构中的任意总线18结构的局域总线18。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线18,微通道体系结构(MAC)总线18,增强型ISA总线18、音视频电子标准协会(VESA)局域总线18以及外围组件互连(PCI)总线18。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其他移动/不可移动的、易失性/非易失性计算机体统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质界面与总线18相连。存储器可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块42,这些程序模块42被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其他程序模块42以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24、摄像头等)通信,还可与一个或者多个使得操作人员能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)界面22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN)),广域网(WAN)和/或公共网络(例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其他模块通信。应当明白,尽管图3中未示出,可以结合计算机设备12使用其他硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元16、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统34等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种基于分片索引的自适应查询方法。
也即,上述处理单元16执行上述程序时实现:依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;依据所述执行计划在所述目标数据分区中进行数据查询。
在本发明实施例中,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有实施例提供的一种基于分片索引的自适应查询方法:
也即,给程序被处理器执行时实现:依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引;依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;依据所述执行计划在所述目标数据分区中进行数据查询。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在操作人员计算机上执行、部分地在操作人员计算机上执行、作为一个独立的软件包执行、部分在操作人员计算机上部分在远程计算机上执行或者完全在远程计算机或者服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到操作人员计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种基于分片索引的自适应查询方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (6)

1.一种基于分片索引的自适应查询方法,其特征在于,用于预设结构化查询语言语句在数据库中动态选择索引进行数据查询,所述方法包括:
依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引,其中,确定若干个所述数据分区是否有效,检查若干个数据分区是否已遍历加载完毕,数据分区对应分区信息会存放在链表或数组内,对所述数据分区逐个遍历,遍历过程会记录当前的遍历索引值,若遍历索引值超出了链表或数组元素的个数,对应的索引代表的数据分区就是无效分区;若所述数据分区已遍历加载完毕时,若干个所述数据分区均有效并获取若干个所述数据分区内的所有数据,对所述所有数据中的每一条数据构建对应的所述索引;
依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;
依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;依据若干个所述索引状态信息在若干个所述数据分区确定所述索引状态信息为所述已创建的所有数据分区;在所述所有数据分区中通过所述预设结构化查询语言语句确定所述目标数据分区;确定所述预设结构化查询语言语句在所述数据库是否存在查询计划;当所述预设结构化查询语言语句在所述数据库不存在所述查询计划时,则对所述预设结构化查询语言语句进行解析生成特征信息;在所述所有数据分区中依据所述特征信息确定所述目标数据分区;
依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;
依据所述执行计划在所述目标数据分区中进行数据查询,其中,依据所述执行计划和所述目标数据分区确定访问路径,依据所述访问路径进行数据查询,具体地,对于多个已构建索引的数据分区,依据预设结构化查询语言语句确定对应的目标数据分区,在目标数据分区使用索引查询,剩余数据分区处于正在构建和未构建时,则通过表扫描查询。
2.根据权利要求1所述的方法,其特征在于,所述依据所述数据库内的数据表生成若干个数据分区的步骤,包括:
在所述数据表中获取分区列表;
依据所述分区列表生成若干个所述数据分区。
3.根据权利要求1所述的方法,其特征在于,所述依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息的步骤,包括:
确定对应于所述索引的索引分区状态表;
依据所述索引分区状态表生成对应于若干个所述数据分区的若干个所述索引状态信息。
4.一种基于分片索引的自适应查询优化装置,其特征在于,用于预设结构化查询语言语句在数据库中动态选择索引进行数据查询,所述装置包括:
构建模块,用于依据所述数据库内的数据表生成若干个数据分区,并通过若干个所述数据分区构建对应于若干个所述数据分区的索引,其中,确定若干个所述数据分区是否有效,检查若干个数据分区是否已遍历加载完毕,数据分区对应分区信息会存放在链表或数组内,对所述数据分区逐个遍历,遍历过程会记录当前的遍历索引值,若遍历索引值超出了链表或数组元素的个数,对应的索引代表的数据分区就是无效分区;当若干个所述数据分区均有效时,所述数据分区已遍历加载完毕,则获取若干个所述数据分区内的所有数据,对所述所有数据中的每一条数据构建对应的所述索引;
第一确定模块,用于依据所述索引确定对应于若干个所述数据分区的若干个索引状态信息;
第二确定模块,用于依据所述预设结构化查询语言语句、若干个所述索引状态信息和若干个所述数据分区确定访问的目标数据分区,其中,所述索引状态信息包括已创建、正在创建和未创建;依据若干个所述索引状态信息在若干个所述数据分区确定所述索引状态信息为所述已创建的所有数据分区;在所述所有数据分区中通过所述预设结构化查询语言语句确定所述目标数据分区;确定所述预设结构化查询语言语句在所述数据库是否存在查询计划;当所述预设结构化查询语言语句在所述数据库不存在所述查询计划时,则对所述预设结构化查询语言语句进行解析生成特征信息;在所述所有数据分区中依据所述特征信息确定所述目标数据分区;
生成模块,用于依据所述预设结构化查询语言语句和所述目标数据分区生成执行计划;
查询模块,用于依据所述执行计划在所述目标数据分区中进行数据查询,其中,依据所述执行计划和所述目标数据分区确定访问路径,依据所述访问路径进行数据查询,具体地,对于多个已构建索引的数据分区,依据预设结构化查询语言语句确定对应的目标数据分区,在目标数据分区使用索引查询,剩余数据分区处于正在构建和未构建时,则通过表扫描查询。
5.一种计算机设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至3中任一项所述的方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述的方法。
CN202211475025.8A 2022-11-23 2022-11-23 一种基于分片索引的自适应查询方法和装置 Active CN115809268B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211475025.8A CN115809268B (zh) 2022-11-23 2022-11-23 一种基于分片索引的自适应查询方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211475025.8A CN115809268B (zh) 2022-11-23 2022-11-23 一种基于分片索引的自适应查询方法和装置

Publications (2)

Publication Number Publication Date
CN115809268A CN115809268A (zh) 2023-03-17
CN115809268B true CN115809268B (zh) 2024-01-16

Family

ID=85483947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211475025.8A Active CN115809268B (zh) 2022-11-23 2022-11-23 一种基于分片索引的自适应查询方法和装置

Country Status (1)

Country Link
CN (1) CN115809268B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216821A (zh) * 2007-01-05 2008-07-09 中兴通讯股份有限公司 数据采集系统的存储管理方法
CN102073697A (zh) * 2010-12-28 2011-05-25 中兴通讯股份有限公司 一种数据处理方法及装置
CN112162983A (zh) * 2020-09-22 2021-01-01 北京人大金仓信息技术股份有限公司 数据库索引建议处理方法、装置、介质和电子设备
CN114168594A (zh) * 2021-12-08 2022-03-11 上海达梦数据库有限公司 一种水平分区表的二级索引创建方法、装置、设备及存储介质
CN115129712A (zh) * 2022-06-09 2022-09-30 北京思特奇信息技术股份有限公司 基于Oracle数据库的分区快速创建方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8909615B2 (en) * 2011-08-30 2014-12-09 Open Text S.A. System and method of managing capacity of search index partitions
KR101546333B1 (ko) * 2014-02-20 2015-08-25 주식회사 티맥스데이터 복합 저장소를 가지는 데이터베이스에서 질의 처리 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101216821A (zh) * 2007-01-05 2008-07-09 中兴通讯股份有限公司 数据采集系统的存储管理方法
CN102073697A (zh) * 2010-12-28 2011-05-25 中兴通讯股份有限公司 一种数据处理方法及装置
CN112162983A (zh) * 2020-09-22 2021-01-01 北京人大金仓信息技术股份有限公司 数据库索引建议处理方法、装置、介质和电子设备
CN114168594A (zh) * 2021-12-08 2022-03-11 上海达梦数据库有限公司 一种水平分区表的二级索引创建方法、装置、设备及存储介质
CN115129712A (zh) * 2022-06-09 2022-09-30 北京思特奇信息技术股份有限公司 基于Oracle数据库的分区快速创建方法及系统

Also Published As

Publication number Publication date
CN115809268A (zh) 2023-03-17

Similar Documents

Publication Publication Date Title
US20230376487A1 (en) Processing database queries using format conversion
CN107247808B (zh) 一种分布式NewSQL数据库系统及图片数据查询方法
US7158996B2 (en) Method, system, and program for managing database operations with respect to a database table
CN104765731B (zh) 数据库查询优化方法和设备
US7836022B2 (en) Reduction of join operations when archiving related database tables
US8364723B1 (en) Apparatus and method for realizing big data into a big object and non-transitory tangible machine-readable medium thereof
US20050076018A1 (en) Sorting result buffer
US8843499B2 (en) Accelerating database queries comprising positional text conditions plus bitmap-based conditions
CN106815353A (zh) 一种数据查询的方法及设备
CN112463800A (zh) 数据读取方法、装置、服务器及存储介质
US20230418824A1 (en) Workload-aware column inprints
CN105760418B (zh) 用于对关系数据库表进行交叉列搜索的方法和系统
CN112162983A (zh) 数据库索引建议处理方法、装置、介质和电子设备
US10019483B2 (en) Search system and search method
US10691757B1 (en) Method and system for cached document search
CN111666302A (zh) 用户排名的查询方法、装置、设备及存储介质
US20090171921A1 (en) Accelerating Queries Based on Exact Knowledge of Specific Rows Satisfying Local Conditions
CN115809268B (zh) 一种基于分片索引的自适应查询方法和装置
US20060085464A1 (en) Method and system for providing referential integrity constraints
CN115374121A (zh) 数据库索引的生成方法、机器可读存储介质与计算机设备
CN115391346A (zh) 数据库聚合索引的生成方法、存储介质与计算机设备
CN114064729A (zh) 一种数据检索方法、装置、设备及存储介质
CN108984720B (zh) 基于列存储的数据查询方法、装置、服务器及存储介质
CN115827653B (zh) 一种用于htap和海量数据的纯列式更新方法及装置
CN115718571B (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