[发明专利]一种数据表的处理方法及装置在审
申请号: | 201610815123.X | 申请日: | 2016-09-09 |
公开(公告)号: | CN107807938A | 公开(公告)日: | 2018-03-16 |
发明(设计)人: | 李茂增;黄海燕;周平高 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京中博世达专利商标代理有限公司11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据表 处理 方法 装置 | ||
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据表的处理方法及装置。
背景技术
数据表连接是数据库系统中的常用技术。数据表连接是指按照连接条件,将不同的数据表合并为一个数据表的过程。目前常用的数据表连接技术包括嵌套循环连接(nest loop join)、哈希连接(hash join)和归并连接(merge join)。
以归并连接为例,假设需要对数据量较大的两个数据表(例如每个数据表的数据量远大于计算机允许该数据表使用的最大内存容量,并且两个数据表分别为数据表A和数据表B)进行归并连接,那么通常需要对这两个数据表进行分区,然后再以每个分区为单位进行归并连接。具体的,首先确定对这两个数据表进行分区的分区数;然后再按照该分区数,将数据表A中的所有元组(数据表中的每一行称为一个元组)按照连接条件中的连接列的哈希值进行分区和排序,并按照该分区数,将数据表B中的所有元组也按照连接条件中的连接列的哈希值进行分区和排序,即对数据表A和数据表B进行分区和排序后,数据表A和数据表B的分区数是相同的;最后再分别将数据表A和数据表B中的各个依次分区读到计算机的内存中,并按照连接列进行归并连接。其中,连接列是指对两个数据表进行归并连接时,两个数据表中进行比较的列。
然而,上述归并连接方法中,由于对两个数据表进行分区的分区数相同,且是按照连接列的哈希值对数据表进行分区的,因此可能会导致某个数据表中的某个分区的元组数比较大,而当这些元组的数据量大于计算机允许该分区使用的最大内存容量时,可能会使得该分区无法被读入内存而导致需要对该分区继续进行进一步分区,如此可能会导致在归并连接中对数据表进行多次分区,从而降低了归并连接的效率。
发明内容
本申请提供一种数据表的处理方法及装置,能够提高归并连接的效率。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种数据表的处理方法,该处理方法可以应用于计算机,该处理方法包括:根据需要分区的数据表的数据量和计算机允许该数据表使用的最大内存容量,确定该数据表的预分区数m;并根据该数据表的分区键的键值统计信息(该分区键的键值统计信息用于表示该数据表中该分区键的键值的分布规律),确定该分区键的键值对应的n个区间(n个区间中的每个区间对应该数据表中的至少一个元组);且根据该数据表的预分区数m,确定该数据表的实际分区数k,以及将该数据表中n个区间对应的元组写入k个分区,以将该数据表分为k个分区,k个分区中每个分区包括n/k个区间对应的元组。其中,m>0,m≤n,n为正整数,k为m向上取整后的值,且k为n的约数。
本申请中,一方面,由于数据表的预分区数是根据需要分区的数据表的数据量和计算机允许该数据表使用的最大内存容量确定的,因此可以使得分区后的数据表中的每个分区的元组均能被成功读入内存;另一方面,由于数据表的分区键的键值统计信息可以表示数据表中该分区键的键值的分布规律,因此根据该分区键的键值统计信息,确定该分区键的键值对应的n个区间后,再根据数据表的预分区数和该n个区间,确定数据表的实际分区数,然后再将数据表中每n/k个区间对应的元组写入k个分区中对应的分区,即将数据表中n个区间对应的元组写入k个分区,从而以将数据表分为K个分区,能够尽量保证分区键的键值相同的元组都集中在一个分区中。如此,采用本申请提供的数据表的处理方法对至少两个数据表进行分区后,由于该至少两个数据表中每个数据表的每个分区的元组均能被成功读入内存,并且分区键的键值相同的元组尽量都集中在一个分区中,因此能够提高归并连接的效率。
进一步地,采用本申请提供的数据表的处理方法对需要进行归并连接的至少两个数据表进行分区后,由于分区键的键值相同的元组尽量都集中在一个分区中,因此还可以降低对该至少两个数据表进行归并连接的复杂度。
在第一方面的第一种可选的实现方式中,上述根据需要分区的数据表的数据量和计算机允许该数据表使用的最大内存容量,确定该数据表的预分区数m的方法可以包括:根据该数据表的数据量、计算机允许该数据表使用的最大内存容量和公式,确定该数据表的预分区数m。其中,该公式为:m=a*b/c,a表示该数据表的每一列的字节数之和,b表示该数据表的元组数,a*b表示该数据表的数据量,c表示计算机内存容量的1/t,t=1或2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610815123.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种网站SEO处理方法、装置及系统
- 下一篇:数据对象的整理方法及设备