The present invention discloses a database query, data block division method and device. The database query method includes: comparing the query conditions sent by the user with the query units in the query unit set, and generating the query vectors according to the comparison results; and the query vectors are separately from the data blocks in the database. The corresponding vector is carried out and operated, and the vector is selected according to the operation result; the query result is obtained in the data block corresponding to the selected vector according to the query condition, and the query unit set is formed in advance by the query unit decomposed in the query workload. The invention can realize more refined skip reading when querying, improve query efficiency and reduce the storage cost.
【技术实现步骤摘要】
一种数据库查询、数据块划分方法和装置
本专利技术涉及数据库
,特别是指一种数据库查询、数据块划分方法和装置。
技术介绍
随着数据量的增长和用户要求的查询延迟的不断降低,数据库的查询处理器面临巨大的挑战,它需要近乎实时地对大量的数据进行及时地处理。为了提高数据处理的速度,其中一个重要的技术是想办法忽略掉一些和查询无关的数据的扫描,提高查询处理速度。通过给每个数据块里包含的记录,维护一些描述性信息(即元信息),查询处理器可以忽略某些数据块的扫描,如果这些元信息表明,这个数据块不包含任何和查询有关的数据。但是,能否真正地忽略(也称为跳读)部分数据,依赖于数据的分块(也称为分区),和查询条件(过滤条件)的匹配程度。目前一种支持跳读技术的查询方法是基于水平划分的数据库表:在数据库中可以使用范围(Range)或者哈希(Hash)数据划分方法,实现负载均衡。也就是数据经过划分之后,我们可以维护划分得到的数据块的统计信息,比如某些查询字段的最大值、最小值、记录数量等,利用这些统计信息,查询处理器,可以忽略一些数据块,无需进行扫描。比如,当查询条件为“时间>=20170101and时间<=20170105”,那么“时间”字段的取值在这个范围之外的数据块,就可以被跳读(即忽略),不用扫描。这种方法实现的是比较粗粒度的数据划分,无法实现更精细化的跳读。另一种支持跳读技术的查询方法是基于物化视图选择方案的方法:所谓物化视图,是把查询的结果保存起来,下次查询到来的时候,如果查询条件完全一样,直接把先前的结果返回即可,不用再执行一遍查询,加快查询的处 ...
【技术保护点】
1.一种数据库查询方法,包括:将用户发送的查询条件与查询单元集合中各查询单元进行比较,根据比较结果生成查询向量;将所述查询向量分别与所述数据库中各数据块所对应的向量进行并操作,根据并操作结果选取向量;根据所述查询条件,在选取的向量所对应的数据块中进行查询,得到查询结果;其中,所述查询单元集合是预先由查询工作负载中分解出的查询单元组合而成的。
【技术特征摘要】
1.一种数据库查询方法,包括:将用户发送的查询条件与查询单元集合中各查询单元进行比较,根据比较结果生成查询向量;将所述查询向量分别与所述数据库中各数据块所对应的向量进行并操作,根据并操作结果选取向量;根据所述查询条件,在选取的向量所对应的数据块中进行查询,得到查询结果;其中,所述查询单元集合是预先由查询工作负载中分解出的查询单元组合而成的。2.根据权利要求1所述的方法,其特征在于,所述查询向量中的元素与所述查询单元集合中的查询单元一一对应,所述查询向量中的元素的取值,根据所述查询条件是否包含该元素所对应的查询单元的比较结果决定。3.根据权利要求1所述的方法,其特征在于,所述根据并操作结果选取向量,具体为:选取与所述查询向量执行并操作后得到的向量元素均为1的向量。4.根据权利要求2所述的方法,其特征在于,所述数据库中的数据块是根据如下方法预先划分的:针对所述数据库中的每个元组,生成与该元组对应的元组向量;其中,所述元组向量中的元素与所述查询单元集合中的查询单元一一对应,且元素排序与所述查询向量中的元素排序一致;所述元组向量中元素的取值,根据该元组是否满足所述元素所对应的查询单元的情况决定;将元组向量相同的元组合并到同一数据块中,且将该数据块与该元组向量对应。5.根据权利要求4所述的方法,其特征在于,在所述将元组向量相同的元组合并到同一数据块后,还包括:将相近的元组向量划分到同一向量组中;将同一向量组中各元组向量所对应的数据块进行合并;其中,合并后的数据块所对应的向量为所述相近的元组向量之间进行并操作后得到的向量。6.根据权利要求5所述的方法,其特征在于,所述将相近的元组向量划分到同一向量组中,具体包括:将每个元组向量单独划分到一个向量组中,作为初始划分得到的向量组;进行至少一次向量组合并;在一次向量组合并过程中:依据当前向量组的整体代价指标C(P)将相近的两个向量组合并,使得相近的元组向量划分到同一向量组中;其中,C(P)根据如下公式二计算:其中,n表示当前向量组的数量,C(Pi)根据如下公式一计算:公式一中,d为查询单元集合中查询单元的数量,|Pi|表示Pi中的元组向量的模,wj是Fj所涉及的查询条件的数量,Fj为所述查询单元集合中的第j个查询单元,u(Pi)j)为u(Pi)的第j比特,其在Pi所对应的任何一个元组,都不符合Fj时取值为0,否则为1;其中,Pi表示第i个向量组。7.一种数据块划分方法,包括:针对数据库中的每个元组,生成与该元组对应的元组向量;其中,所述元组向量中的元素与查询单元集合中的查询单元一一对应,且元素排序与所述查询向量中的元素排序一致;所述元组向量中元素的取值,根据该元组是否满足所述元素所对应的查询单元的情况决定;将元组向量相同的元组合并到同一数据块中,且将该数据块与该元组向量对应;其中,所述查询单元集合是预先由查询工作负载中分解出的查询单元组合而成的。8.根据权利要求7所述的方法,其特征在于,在所述将元组向量相同的元组合并到同一数据块后,还包括:将相近的元组向量划分到同一向量组中;将同一向量组中各元组向量所对应的数据块进行合并;其中,合并后的数据块所对应的向量为所述相近的元组...
【专利技术属性】
技术研发人员:王继业,曾楠,孙乔,张春光,邓卜侨,孙雷,王晋雄,付兰梅,崔伟,刘炜,王思宁,冷曼,赵蕾,李华勤,曲传哲,
申请(专利权)人:北京国电通网络技术有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。