CN110019192B - 数据库的检索方法及装置 - Google Patents

数据库的检索方法及装置 Download PDF

Info

Publication number
CN110019192B
CN110019192B CN201710862402.6A CN201710862402A CN110019192B CN 110019192 B CN110019192 B CN 110019192B CN 201710862402 A CN201710862402 A CN 201710862402A CN 110019192 B CN110019192 B CN 110019192B
Authority
CN
China
Prior art keywords
index
database
value
query
data
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
CN201710862402.6A
Other languages
English (en)
Other versions
CN110019192A (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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing Ltd
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 Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN201710862402.6A priority Critical patent/CN110019192B/zh
Publication of CN110019192A publication Critical patent/CN110019192A/zh
Application granted granted Critical
Publication of CN110019192B publication Critical patent/CN110019192B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种数据库的检索方法及装置,包括:接收用户的查询请求,所述查询请求中携带有查询参数;基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配;根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作。本申请至少能够减少索引引入的开销同时提高数据的检索速度。

Description

数据库的检索方法及装置
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库的检索方法及装置。
背景技术
为了提高数据的检索速度,通常的做法是对数据创建索引。但并不是所有的数据,创建索引都有加快检索速度的效果。针对数据库中的倾斜数据,如果通过索引扫描,需要按索引的顺序,先访问索引的叶子,再访问堆表的记录,扫描会非常慢,反而不如直接全表扫描数据。然而,相关技术在数据库中创建索引时,会对表中所有记录创建索引,不仅引入了开销,而且会使倾斜数据的检索速度更慢。
发明内容
本申请旨在至少解决相关技术中的技术问题之一。
本申请提供一种数据库的检索方法及装置,至少能够减少索引引入的开销同时提高数据的检索速度。
本申请采用如下技术方案:
一种数据库的检索方法,包括:
接收用户的查询请求,所述查询请求中携带有查询参数;
基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配;
根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作。
其中,以所述查询请求对应的检索方式对所述数据库执行检索操作,包括:在所述查询请求与所述数据库的索引查询条件相匹配时,确定所述查询请求支持索引扫描,以索引扫描的方式执行所述检索操作。
其中,所述基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配,包括:将所述查询参数与预先确定的过滤值比较,所述过滤值为所述表的倾斜数据;在所述查询参数属于所述过滤值时,则确定所述查询请求与所述数据库的索引查询条件不匹配;在所述查询参数不属于所述过滤值时,则确定所述查询请求与所述数据库的索引查询条件相匹配。
其中,所述方法还包括:根据数据库的表的表统计信息以及预先设定的索引条件,确定所述表的过滤值,并记录到所述表的索引信息中;所述表统计信息包括:所述表中出现频率最高的前M个字段值及其出现频率,所述M为预设值;所述索引条件为:出现频率高于N的字段值为所述过滤值,所述N为预设值;其中,M为不小于1的整数,N满足0<N<1。
其中,所述方法还包括:过滤所述查询参数对应的表数据中的所述过滤值,并针对过滤后的表数据中各字段值构建索引数据。
其中,所述方法还包括:在表数据发生更新时,确定所述表的新过滤值,并根据所述新过滤值、以及所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作;
其中,所述索引维护操作包括如下之一或两项:
删除所述索引信息中所述过滤值对应的索引页;
识别属于所述索引信息中的过滤值但不属于所述新过滤词的字段值,并为所识别出的字段值构建索引数据。
其中,所述执行索引维护操作之后,还包括:将所述新过滤值更新到所述表的索引信息中。
其中,所述根据所述新过滤值、和所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作,包括:将所述新过滤值与所述表的索引信息中已记录的过滤值比较,在所述比较的结果为不一致时执行所述索引维护操作。
一种数据库的检索装置,包括:
接收模块,用于接收用户的查询请求,所述查询请求中携带有查询参数;
判断模块,用于基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配;
检索执行模块,用于根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作。
其中,所述检索执行模块用于根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作,包括:在所述查询请求与所述数据库的索引查询条件相匹配时,为所述查询支持索引扫描时,以索引扫描的方式执行检索操作。
其中,所述判断模块,用于基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配,包括:将所述查询参数与预先确定的过滤值比较,所述过滤值为所述表的倾斜数据;在所述查询参数属于所述过滤值时,所述判断结果为所述查询请求与所述数据库的索引查询条件不匹配;在所述查询参数不属于所述过滤值时,所述查询请求与所述数据库的索引查询条件相匹配。
其中,所述判断模块,还用于根据数据库的表的表统计信息以及预先设定的索引条件,确定所述表的过滤值,并记录到所述表的索引信息中;其中,所述表统计信息包括:所述表中出现频率最高的前M个字段值及其出现频率,所述M为预设值;所述索引条件为:出现频率高于N的字段值为所述过滤值,所述N为预设值;其中,M为不小于1的整数,N满足0<N<1。
其中,所述检索执行模块,还用于过滤所述查询参数对应的表数据中的所述过滤值,并针对过滤后的表数据中各字段值构建索引数据。
其中,所述判断模块,还用于在表数据发生更新时,确定所述表的新过滤值;所述检索执行模块,还用于根据所述新过滤值、以及所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作;其中,所述索引维护操作包括如下之一或两项:删除所述索引信息中所述过滤值对应的索引页;识别属于所述索引信息中的过滤值但不属于所述新过滤词的字段值,并为所识别出的字段值构建索引数据。
其中,所述检索执行模块,还可用于在执行索引维护操作时,将所述新过滤值更新到所述表的索引信息中。
一种数据库的检索装置,包括:
存储有数据库的检索程序的存储器;
处理器,配置为读取所述数据库的检索程序以执行下述操作:
接收用户的查询请求,所述查询请求中携带有查询参数;
基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配;
根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作。
本申请包括以下优点:
本申请通过查询请求中的查询参数以及数据库的索引查询条件来确定检索方式,如此,针对倾斜数据可采用其对应的检索方式进行检索而不是采用索引扫描的方式,从而降低索引数据空间需求,同时降低索引对数据写入带来的性能影响以提升写性能,同时不降低读的性能。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1为实施例一中数据库的检索方法的流程示意图;
图2为实施例一中索引创建示例性实现过程的的示意图;
图3为实施例一中索引维护示例性实现过程的示意图;
图4为实施例一中数据检索示例性实现过程的示意图;
图5为实施例二中数据库检索装置的组成结构示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一个典型的配置中,客户端或服务器的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。内存可能包括模块1,模块2,……,模块N(N为大于2的整数)。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
相关技术中,针对数据库中的倾斜数据,如果通过索引扫描,扫描会非常慢,反而不如直接全表扫描数据。例如一张1000万记录的表,该表中有一列存储了各记录的国家,其中800万记录都是中国,那么当需要搜索“中国”的数据时,将返回800万条记录。由于记录太多,通过这个字段“中国”的索引扫描会非常慢,反而不如直接全表扫描数据。由此可知,在存在倾斜数据时,索引不适合倾斜数据,比如一张表80%的数据是倾斜数据,理论上只需要对其他20%数据创建索引。
针对上述情况,本申请提出如下技术方案。需要说明的是,本申请技术方案可应用于多种类型的数据库,比如,可应用于关系型关系型,也可以应用于分析型数据库等。
本文术语解释如下:
数据倾斜:表示数据分布是否存在热点。例如某一张表,有1000万条记录,其中某个字段值等于1的记录数有800万条,该等于1的字段值即为倾斜数据。
数据选择性:当查询符合某个条件的记录时,选择性表示返回的结果数有多少。例如选择性为100,那么返回100条。选择性越大,返回结果越多。
下面对本申请技术方案的具体实现方式进行详细说明。
实施例一
如图1所示,本实施例提供一种数据库索引管理的方法,可以包括:
步骤101,接收用户的查询请求,所述查询请求中携带有查询参数;
步骤102,基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配;
步骤103,根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作。
本实施例中,通过查询请求中的查询参数以及数据库的索引查询条件来确定检索方式,如此,针对倾斜数据可采用其对应的检索方式进行检索而不是采用索引扫描的方式,从而降低索引数据空间需求,同时降低索引对数据写入带来的性能影响以提升写性能,同时不降低读的性能。
本实施例中,所述根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作,包括:在所述查询请求与所述数据库的索引查询条件匹配时,确定所述查询请求支持索引扫描,以索引扫描的方式执行所述检索操作;在所述查询请求与所述数据库的索引查询条件不匹配时,确定所述查询不支持索引扫描时,可以以全表扫描的方式执行检索操作。这样,可以根据需要采用对应的方式执行检索操作,比如针对倾斜数据即可采用全表扫描,从而有效提高数据库的检索性能。
本实施例中,所述基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配,可以包括:将所述查询参数与预先确定的过滤值比较,所述过滤值为所述表的倾斜数据;在所述查询参数属于所述过滤值时,则确定所述查询请求与所述数据库的索引查询条件不匹配,所述查询请求不支持索引扫描;在所述查询参数不属于所述过滤值时,则确定所述查询请求与所述数据库的索引查询条件相匹配,所述查询请求支持索引扫描。
一种实现方式中,上述查询参数可以是用户指定的查询值(VALUE),如果查询的值属于过滤值,则该查询请求不支持索引扫描,而执行全表扫描,如果查询的值不属于过滤值,则该查询请求支持扫描。
本实施例中,所述所述方法还可以包括:根据数据库的表的表统计信息以及预先设定的索引条件,确定所述表的过滤值,并记录到所述表的索引信息中;所述表统计信息包括:所述表中出现频率最高的前M个字段值及其出现频率,所述M为预设值;所述索引条件为:出现频率高于N的字段值为所述过滤值,所述N为预设值;其中,其中,M为不小于1的整数,N满足0<N<1。这里,通过表统计信息确定过滤值,可确保过滤值与表数据的更新同步。除此之外,还可以采用其他方式确定过滤值。
本实施例中,还可以根据实际需要更改索引条件。比如,可以基于表统计信息的变化来重新配置索引条件。举例来说,表数据发生更改时,其表统计信息会发生变化,此时,可以基于该表统计信息的编号来重新配置索引条件中的N。当然,还可以在其他情况下重新配置索引条件,比如,应用环境的变化、用户需求的不同等。
本实施例中,过滤值可以是单列字段值、多列字段值、多值类型的元素值等。这里,元素指多值类型的值。除此之外,过滤值还可以是其他类型,对此,本文不作限制。
本实施例中,表统计信息是指数据库的表统计信息,收集有表空间、数据块数、记录数、相关性等信息。实际应用中,数据库中的数据都存储在表空间中。表空间即是管理将逻辑数据库设计映射到操作系统物理存储中的一个数据库对象,用于指明数据的物理位置。比如,一个数据库对应多个表空间,一个表空间可以对应多个区,一个区对应多个数据块(Data Block)或45e数据页(Data Page),真正的数据保存在数据块或数据页中。也就是说,表数据可以以数据页或数据块为单位进行存储和读取。
一种实现方式中,表统计信息可以包括列统计信息,列统计信息中包含所对应列中出现频率最高的M个字段值及其出现频率,其中,M为预设的值。其中,频率可以通过出现次数的占比来表示。比如,列统计信息{{1,10,100},{0.3,0.3,0.3}}表示1,10,100这三个字段值分别出现频率为30%。
一种实现方式中,列柱状图是表统计信息的一种,表示这个列按记录数均匀切分时的边界。例如{1,100,101,1000,10000},切分成6个均匀的区间,每个区间的记录数一样多,区间如下:<1;>=1and<100;>=100and<101;>=101and<1000;>=1000and<1000;>=10000。
实际应用中,可以通过执行表分析来获取表统计信息。这里,表分析是收集表统计信息的动作。比如,可以定时通过表分析收集预定时长内的表统计信息。再比如,可以通过定时器来定时执行表分析,从而定时收集表统计信息。又比如,可以通过执行定时表分析任务来收集表统计信息。以上均为举例,实际应用中还可以采用其他方式来获取表统计信。
本实施例中,还可以基于过滤值创建索引或进行索引维护,这样,可以过滤掉倾斜数据,针对表数据中的非倾斜数据创建索引,从而达到裁剪索引体积,降低索引数据空间需求,同时降低索引对数据写入带来的性能影响以提升写性能,同时不降低数据库的读性能。
一种实现方式中,所述方法还可以包括:过滤所述查询参数对应的表数据中的所述过滤值,并针对过滤后的表数据中各字段值构建索引数据。
一种实现方式中,所述方法还可以包括包括:在表数据发生更新时,确定所述表的新过滤值,并根据所述新过滤值、以及所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作;其中,所述索引维护操作包括如下之一或两项:1)删除所述索引信息中所述过滤值对应的索引页;2)识别属于所述索引信息中的过滤值但不是所述新过滤词的字段值,并为所识别出的字段值构建索引数据。
这里,所述执行索引维护操作,还可以包括:将所述新过滤值更新到所述表的索引信息中。如此,可确保表的过滤值与表数据的更新同步,从而能够更加精准的确定表数据当前的倾斜数据。
本实施例中,索引数据以索引记录的形式存储在索引页中,索引记录包括:定义索引时指定的字段值和逻辑指针,逻辑指针指向表中的数据页/数据块或另一个索引页。一个索引页可以存储多个索引记录。索引数据的的类型可以是聚集索引和非聚集索引。
一种实现方式中,执行索引维护操作之前,还可以预先判断是否需要执行索引维护操作。判断是否需要执行索引维护操作的方式可以有多种。比如,可以通过判断表数据或表统计信息是否发生更新。再比如,所述根据所述新过滤值、和所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作,可以包括:将所述新过滤值与所述表的索引信息中已记录的过滤值比较,在所述比较的结果为不一致时执行所述索引维护操作。在所述比较的结果为一致时则可以不执行所述索引维护操作。
下面以两个例子说明本实施例的示例性实现方式。
示例1:以索引创建过程为例进行说明。
如图2所示,本例子中的实现过程可以包括如下步骤:
步骤201,实时获取表统计信息;
步骤202,根据表统计信息以及预先配置的索引条件确定表数据中的过滤值,并记录这些过滤值;
步骤203,针对表数据中非过滤值的字段构建索引,完成表数据的索引构建,形成对应该表数据的索引数据。
一种实现方式中,表数据的索引构建过程可以通过如下方式实现:过滤掉表数据中的上述过滤值,针对过滤之后剩余的表数据构建索引,形成该表数据的索引数据。
比如,本例子中预先配置的索引条件为:出现频率大于N的字段值为过滤值,N为设定值,满足0<N<1。那么,根据表统计信息及该索引条件可以确定过滤值,再在创建索引时过滤掉这些过滤值,也就是说,针对表数据中对上述过滤值不建索引,针对表数据中除过滤值之外的其他字段值创建索引。比如,表数据包含1000万数据,有800万是同一个字段值,那么这个字段值即为过滤值。创建索引时,该字段值不构建索引,对于这800万数据之外的数据的字段值构建索引,这样,索引开销更小。
示例2:以索引维护过程为例进行说明。
如图3所示,表数据发生变更、新增、删除等操作之后,表统计信息会发生变化,此时有必要对索引进行维护。
步骤301,表数据发生变更、新增、删除等操作之后,获取更新后表数据的表统计信息;
步骤302,根据表统计信息以及预先配置的索引条件判断是否执行索引维护;
具体的,根据当前表统计信息以及预先配置的索引条件,确定更新后表数据后的新过滤值。比对该新过滤值与已记录的过滤值,如果两者一致则不需要执行索引维护,如果两者不一致则需要执行索引维护;
步骤303,执行索引维护操作,并在索引维护操作完成后将当前的新过滤值更新到所述记录中,即将该记录中的过滤值替换为该新过滤值。
所述索引维护操作包括但不限于如下:1、删除新过滤值的索引页;2、针对之前属于过滤值但当前不属于新过滤值的字段值,从堆表数据中生成索引页,并为其创建索引记录,完成索引数据的构建。
实际应用中,可以通过定时任务来自动执行上述的索引维护过程。如此,可确保表数据发生变化时其索引数据也能同步得到更新,在索引开销小的前提下可提高索引数据的时效性。
下面以一个例子说明本实施例的示例性实现方式。
如图4所示,本例子中数据库的检索过程可以包括如下步骤:
步骤401,接收查询请求,查询请求携带查询值;
步骤402,生成执行计划,根据所述查询值以及相应表的过滤值判断是否需要执行索引扫描,是则继续步骤403,否则继续步骤404;
步骤403,查询值不属于所述过滤值时,该查询值不是相应表的倾斜数据,执行索引扫描以完成相应的检索操作;
步骤404,查询值属于所述过滤值时,该查询值是相应表的倾斜数据,执行全表扫描以完成相应的检索操作。
实施例二
相应的,本实施例还提供一种数据库的检索装置,如图5所示,可以包括:包括:
接收模块51,用于接收用户的查询请求,所述查询请求中携带有查询参数;
判断模块52,用于基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配;
检索执行模块53,用于根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作。
本实施例中,检索执行模块53根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作,可以包括:在所述查询请求与所述数据库的索引查询条件相匹配时,确定所述查询支持索引扫描,以索引扫描的方式执行检索操作。
本实施例中,判断模块52基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配,可以包括:将所述查询参数与预先确定的的过滤值比较,所述过滤值为所述表的倾斜数据;在所述查询参数属于所述过滤值时,则确定所述查询请求与所述数据库的索引查询条件不匹配,所述查询请求不支持索引扫描;在所述查询参数不属于所述过滤值时,则确定所述查询请求与所述数据库的索引查询条件相匹配,所述查询请求支持索引扫描。
本实施例中,判断模块52,还可用于根据数据库的表的表统计信息以及预先设定的索引条件,确定所述表的过滤值,并记录到所述表的索引信息中;其中,所述表统计信息包括:所述表中出现频率最高的前M个字段值及其出现频率,所述M为预设值;所述索引条件为:出现频率高于N的字段值为所述过滤值,所述N为预设值;其中,M为不小于1的整数,N满足0<N<1。
本实施例中,检索执行模块53,还可用于过滤所述查询参数对应的表数据中的所述过滤值,并针对过滤后的表数据中各字段值构建索引数据。
本实施例中,判断模块52,还可用于在表数据发生更新时,确定所述表的新过滤值;检索执行模块53,还可用于根据所述新过滤值、以及所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作;其中,所述索引维护操作包括如下之一或两项:删除所述索引信息中所述过滤值对应的索引页;识别属于所述索引信息中的过滤值但不属于所述新过滤词的字段值,并为所识别出的字段值构建索引数据。这里,检索执行模块53,还可用于在执行索引维护操作时,将所述新过滤值更新到所述表的索引信息中。
本实施例中,所述检索执行模块53根据所述新过滤值、和所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作,还可包括:将所述新过滤值与所述表的索引信息中已记录的过滤值比较,在所述比较的结果为不一致时执行所述索引维护操作。
本实施例的其他技术细节可参考实施例一。
需要说明的是,该数据库的检索装置可以通过可实现上述功能的任何计算设备来实现,该计算设备可以是服务器或服务器集群,该服务器可以是物理服务器,也可以是云服务器。实际应用中,该数据库索引管理装置中,接收模块51、判断模块52、检索执行模块53分别可以是软件、硬件或两者的结合。
实施例三
相应的,本实施例还提供一种数据库的检索装置,包括:
存储有数据库的检索程序的存储器;
处理器,配置为读取所述数据库的检索程序以执行下述操作:
接收用户的查询请求,所述查询请求中携带有查询参数;
基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配;
根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作。
本实施例的其他技术细节可参考实施例一。
需要说明的是,该数据库的检索装置可以通过可实现上述功能的任何计算设备来实现,该计算设备可以是服务器或服务器集群,该服务器可以是物理服务器,也可以是云服务器。
实施例四
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读程序,所述计算机可读程序被处理器执行时可实现实施例一所述方法的步骤。
本实施例的其它实现细节可参考实施例一和实施例二。
下面对上述各实施例的示例性实现方式进行详细说明。需要说明的是,下文各实例可相互结合。并且,下文实例中各流程、执行过程等也可以根据实际应用的需要进行调整。此外,在实际应用中,上述各实施例还可以有其他的实现方式,对此,本文不作限制。
本实例对本申请的示例性应用场景进行说明。
存储有电商数据的数据库,该电商数据以表的形式存储,一个表包含关联在一个店铺ID之下的商品销售记录,该商品销售记录中至少包含已销售商品的商品对象ID的字段值。该表数据中有1000万条商品销售记录,其中,热销的某一种商品的记录数有800万条。此时,该热销商品的商品对象ID被确定为过滤值,针对表数据中除该商品对象ID之外的其他200万字段值构建索引。检索时,对于该热销商品的商品销售记录执行全表扫描,对于非该热销商品的商品销售记录执行索引扫描。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。

Claims (13)

1.一种数据库的检索方法,包括:
接收用户的查询请求,所述查询请求中携带有查询参数;
比较所述查询参数与所述数据库的过滤值,其中,所述过滤值包括所述数据库的表的倾斜数据;
根据比较结果,确定所述查询请求支持的检索方式,并以所述查询请求支持的检索方式对所述数据库执行检索操作,包括:
在所述查询参数不属于所述过滤值时,则确定所述查询请求支持索引扫描,以索引扫描的方式执行所述检索操作;
在所述查询参数属于所述过滤值时,则确定所述查询请求不支持索引扫描,以全表扫描的方式执行所述检索操作。
2.根据权利要求1所述的检索方法,其特征在于,所述比较所述查询参数与所述数据库的过滤值之前,所述方法还包括:
根据数据库的表的表统计信息以及预先设定的索引条件,确定所述表的过滤值,并记录到所述表的索引信息中;
所述表统计信息包括:所述表中出现频率最高的前M个字段值及其出现频率,所述M为预设值;
所述索引条件为:出现频率高于N的字段值为所述过滤值,所述N为预设值;
其中,M为不小于1的整数,N满足0<N<1。
3.根据权利要求2所述的检索方法,其特征在于,所述确定所述表的过滤值之后,所述方法还包括:
过滤所述数据库的表数据中的所述过滤值,并针对过滤后的表数据中各字段值构建索引数据。
4.根据权利要求2所述的检索方法,其特征在于,所述方法还包括:
在表数据发生更新时,确定所述表的新过滤值,并根据所述新过滤值、以及所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作;
其中,所述索引维护操作包括如下之一或两项:
删除所述新过滤值对应的索引页;
识别属于所述索引信息中的过滤值但不属于所述新过滤值的字段值,并为所识别出的字段值构建索引数据。
5.根据权利要求4所述的方法,其特征在于,执行索引维护操作,还包括:将所述新过滤值更新到所述表的索引信息中。
6.根据权利要求4所述的方法,其特征在于,所述根据所述新过滤值、和所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作,包括:
将所述新过滤值与所述表的索引信息中已记录的过滤值比较,在所述比较的结果为不一致时执行所述索引维护操作。
7.一种数据库的检索装置,包括:
接收模块,用于接收用户的查询请求,所述查询请求中携带有查询参数;
判断模块,用于比较所述查询参数与所述数据库的过滤值,其中,所述过滤值包括所述数据库的表的倾斜数据;
检索执行模块,用于根据所述比较结果,确定所述查询请求支持的检索方式,并以所述查询请求支持的检索方式对所述数据库执行检索操作,包括:
在所述查询参数不属于所述过滤值时,则确定所述查询请求支持索引扫描,以索引扫描的方式执行所述检索操作;
在所述查询参数属于所述过滤值时,则确定所述查询请求不支持索引扫描,以全表扫描的方式执行所述检索操作。
8.一种数据库的检索装置,包括:
存储有数据库的检索程序的存储器;
处理器,配置为读取所述数据库的检索程序以执行下述操作:
接收用户的查询请求,所述查询请求中携带有查询参数;
比较所述查询参数与所述数据库的过滤值,其中,所述过滤值包括所述数据库的表的倾斜数据;
根据所述比较结果,确定所述查询请求支持的检索方式,并以所述查询请求支持的检索方式对所述数据库执行检索操作,包括:
在所述查询参数不属于所述过滤值时,则确定所述查询请求支持索引扫描,以索引扫描的方式执行所述检索操作;
在所述查询参数属于所述过滤值时,则确定所述查询请求不支持索引扫描,以全表扫描的方式执行所述检索操作。
9.一种索引创建方法,包括:
确定数据库的过滤值,所述过滤值包括所述数据库的表的倾斜数据;
基于所述过滤值,创建所述数据库的索引数据,包括:
过滤所述数据库的表数据中的过滤值,针对过滤后的表数据中的字段值构建索引数据。
10.根据权利要求9所述的方法,其特征在于,所述确定数据库的过滤值,包括:
根据所述数据库的表统计信息以及预先设定的索引条件,确定所述过滤值;其中,所述表统计信息包括:所述数据库的表中出现频率最高的前M个字段值及其出现频率,所述M为预设值;
所述索引条件,包括:出现频率高于N的字段值为所述过滤值,所述N为预设值;其中,M为不小于1的整数,N满足0<N<1。
11.根据权利要求9所述的方法,其特征在于,所述创建所述数据库的索引数据之后,所述方法还包括:
在所述数据库的表的表数据发生更新时,确定所述表的新过滤值;
在所述新过滤值与所述数据库的表的索引信息中已记录的过滤值不一致时,执行所述表的索引维护操作。
12.根据权利要求11所述的方法,其特征在于,所述索引维护操作包括如下之一或两项:
删除所述新过滤值对应的索引页;
识别属于所述索引信息中的过滤值但不属于所述新过滤值的字段值,并为所识别出的字段值构建索引数据。
13.一种计算机可读存储介质,其特征在于,存储有计算机可读程序,所述计算机可读程序被处理器执行时实现如权利要求1至6中任一项所述的数据库的检索方法的步骤。
CN201710862402.6A 2017-09-21 2017-09-21 数据库的检索方法及装置 Active CN110019192B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710862402.6A CN110019192B (zh) 2017-09-21 2017-09-21 数据库的检索方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710862402.6A CN110019192B (zh) 2017-09-21 2017-09-21 数据库的检索方法及装置

Publications (2)

Publication Number Publication Date
CN110019192A CN110019192A (zh) 2019-07-16
CN110019192B true CN110019192B (zh) 2023-10-31

Family

ID=67186347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710862402.6A Active CN110019192B (zh) 2017-09-21 2017-09-21 数据库的检索方法及装置

Country Status (1)

Country Link
CN (1) CN110019192B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112069175B (zh) * 2020-08-25 2024-03-29 北京五八信息技术有限公司 数据查询的方法、装置及电子设备
CN114416070B (zh) * 2022-01-25 2023-03-24 重庆允丰科技有限公司 用于可视化配置触发器的节点组件及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727465A (zh) * 2008-11-03 2010-06-09 中国移动通信集团公司 分布式列存储数据库索引建立、查询方法及装置与系统
CN104965861A (zh) * 2015-06-03 2015-10-07 上海新炬网络信息技术有限公司 一种数据访问监控装置
CN105975463A (zh) * 2015-09-25 2016-09-28 武汉安天信息技术有限责任公司 一种基于MapReduce识别优化数据倾斜的方法及系统
CN106959963A (zh) * 2016-01-12 2017-07-18 杭州海康威视数字技术股份有限公司 一种数据查询方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727465A (zh) * 2008-11-03 2010-06-09 中国移动通信集团公司 分布式列存储数据库索引建立、查询方法及装置与系统
CN104965861A (zh) * 2015-06-03 2015-10-07 上海新炬网络信息技术有限公司 一种数据访问监控装置
CN105975463A (zh) * 2015-09-25 2016-09-28 武汉安天信息技术有限责任公司 一种基于MapReduce识别优化数据倾斜的方法及系统
CN106959963A (zh) * 2016-01-12 2017-07-18 杭州海康威视数字技术股份有限公司 一种数据查询方法、装置及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
笔记-hive分区、桶、倾斜 (/blog/wulili/7747);liliwu;《https://ask.hellobi.com/blog/wulili/7747》;20170427;第1-3页 *

Also Published As

Publication number Publication date
CN110019192A (zh) 2019-07-16

Similar Documents

Publication Publication Date Title
CN110019218B (zh) 数据存储与查询方法及设备
CN107491487B (zh) 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质
CN106528787B (zh) 一种基于海量数据多维分析的查询方法及装置
US8924373B2 (en) Query plans with parameter markers in place of object identifiers
CN106471501B (zh) 数据查询的方法、数据对象的存储方法和数据系统
CN104133867A (zh) 分布式顺序表片内二级索引方法及系统
US10552460B2 (en) Sensor data management apparatus, sensor data management method, and computer program product
CN106649412B (zh) 一种数据处理方法和设备
CN103440245A (zh) 数据库系统的行列混合存储方法
CN102779138B (zh) 实时数据的硬盘存取方法
KR20020028208A (ko) 데이터베이스 오브젝트 통계의 실시간 수집 방법 및 시스템
CN110309233A (zh) 数据存储的方法、装置、服务器和存储介质
Liu et al. DGFIndex for smart grid: Enhancing hive with a cost-effective multidimensional range index
CN112262379A (zh) 存储数据项并且标识存储的数据项
WO2015168988A1 (zh) 一种数据索引创建方法、装置及计算机存储介质
CN110019192B (zh) 数据库的检索方法及装置
CN116881287A (zh) 一种数据查询方法及相关设备
WO2020024798A1 (zh) 一种时序数据的高效存储方法
CN104408128A (zh) 一种基于b+树异步更新索引的读优化方法
CN114328601A (zh) 数据降采样和数据查询方法、系统及存储介质
CN111813773B (zh) 一种电网抄表数据存储方法、上传方法、装置和存储装置
CN110968555B (zh) 维度数据处理方法和装置
CN111639087A (zh) 数据库中数据更新方法、装置和电子设备
JP6904724B2 (ja) 地図データベース作成装置及び地図データベース作成方法並びに地図データベース作成プログラム
CN108460067B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40010958

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210926

Address after: Room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant after: Alibaba (China) Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: ALIBABA GROUP HOLDING Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211209

Address after: No.12 Zhuantang science and technology economic block, Xihu District, Hangzhou City, Zhejiang Province

Applicant after: Aliyun Computing Co.,Ltd.

Address before: 310052 room 508, 5th floor, building 4, No. 699 Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant before: Alibaba (China) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant