[发明专利]一种聚簇存储方法及装置有效
申请号: | 201410228979.8 | 申请日: | 2014-05-27 |
公开(公告)号: | CN104021161B | 公开(公告)日: | 2018-06-15 |
发明(设计)人: | 张金玉;周庆庆;张仲良 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京中博世达专利商标代理有限公司 11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明实施例提供一种聚簇存储方法及装置,涉及计算机技术领域,能够在对数据装载性能和数据更新性能影响较小的同时,提高数据查询性能和数据压缩效率。该方法包括:将待存储的第一数据逐行缓存至数据库系统中的本地内存中;确定第一排序列,第一排序列用于对本地内存中已缓存的数据进行排序;若本地内存中已缓存的第二数据满足预设条件,则根据第一排序列对第二数据进行排序,第二数据为第一数据中的已缓存至本地内存中的数据;将排序后的第二数据聚簇存储至数据库系统中的存储介质中。 1 | ||
搜索关键词: | 排序 缓存 内存 存储 聚簇 数据库系统 第一数据 计算机技术领域 数据压缩效率 存储介质 数据查询 数据更新 数据装载 性能影响 预设条件 逐行 | ||
将待存储的第一数据的一部分缓存至所述数据库系统中的本地内存中;
若所述本地内存中已缓存的第二数据满足预设条件,则根据获取的第一排序列对所述第二数据进行排序,所述第二数据为所述第一数据中的已缓存至所述本地内存中的数据;
将排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中;
重复执行上述三个步骤,直至将所述第一数据全部存储至所述数据库系统的存储介质中,所述存储介质中存储的第一数据包括多个局部有序的第二数据。
2.根据权利要求1所述的聚簇存储方法,其特征在于,所述预设条件用于表征所述本地内存中已缓存的第二数据的数据量与所述本地内存允许存储的数据量之间的关系。
3.根据权利要求1或2所述的聚簇存储方法,其特征在于,所述预设条件为所述第二数据的行数大于或等于第一预设阈值,其中,所述若所述本地内存中已缓存的第二数据满足预设条件,则根据获取的第一排序列对所述第二数据进行排序,具体包括:
若所述第二数据的行数大于或等于所述第一预设阈值,则根据所述第一排序列对所述第二数据进行排序。
4.根据权利要求1或2所述的聚簇存储方法,其特征在于,所述预设条件为所述第二数据占用所述本地内存的大小大于或等于第二预设阈值,其中,所述若所述本地内存中已缓存的第二数据满足预设条件,则根据获取的第一排序列对所述第二数据进行排序,具体包括:
若所述第二数据占用所述本地内存的大小大于或等于所述第二预设阈值,则根据所述第一排序列对所述第二数据进行排序。
5.根据权利要求1或2所述的聚簇存储方法,其特征在于,所述根据获取的第一排序列对所述第二数据进行排序,具体包括:根据所述第一排序列的数值大小或所述第一排序列的数值的哈希值大小对所述第二数据进行排序。
6.根据权利要求1或2所述的聚簇存储方法,其特征在于,所述将排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中,具体包括:将排序后的所述第二数据聚簇存储至所述存储介质中的空闲物理块中,所述空闲物理块为除第三数据占用的物理块之外的物理块,所述第三数据为所述第一数据中在所述第二数据之前已聚簇存储至所述存储介质中的数据。
7.根据权利要求1或2所述的聚簇存储方法,其特征在于,所述第一排序列包括物理列和表达式中的至少一个。
8.根据权利要求1或2所述的聚簇存储方法,其特征在于,在所述第一数据全部存储至所述存储介质中之后,所述方法还包括:确定查询列;
若所述查询列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行查询操作。
9.根据权利要求8所述的聚簇存储方法,其特征在于,所述确定查询列之后,根据所述第一个排序列,对所述第一数据进行查询操作之前,所述方法还包括:将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述根据所述第一个排序列,对所述第一数据进行查询操作,具体包括:
根据所述第一个排序列,在所述本地内存中采用二分查找方式对所述第一数据的一个或多个数据页中的每个数据页进行查询操作。
10.根据权利要求1或2所述的聚簇存储方法,其特征在于,在所述第一数据全部存储至所述存储介质中之后,所述方法还包括:获取第二排序列;
若所述第二排序列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行排序操作。
11.根据权利要求10所述的聚簇存储方法,其特征在于,所述获取第二排序列之后,根据所述第一个排序列,对所述第一数据进行排序操作之前,所述方法还包括:将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述根据所述第一个排序列,对所述第一数据进行排序操作,具体包括:
根据所述第一个排序列,在所述本地内存中对所述第一数据进行归并排序。
12.根据权利要求1或2所述的聚簇存储方法,其特征在于,在所述第一数据全部存储至所述存储介质中之后,所述方法还包括:确定聚合列;
若所述聚合列为所述第一排序列中的第一个排序列,则根据所述第一个排序列,对所述第一数据进行聚合操作,所述聚合操作为在所述第一数据中查找最大值或最小值的操作。
13.根据权利要求12所述的聚簇存储方法,其特征在于,所述确定聚合列之后,根据所述第一个排序列,对所述第一数据进行聚合操作之前,所述方法还包括:将所述存储介质中存储的所述第一数据读入所述本地内存中;
其中,所述根据所述第一个排序列,对所述第一数据进行聚合操作,具体包括:
根据所述第一个排序列,在所述本地内存中确定所述第一数据的一个或多个数据页中的每个数据页中的最大值或最小值;
依次比较所述每个数据页中的最大值或最小值,以确定所述第一数据中的最大值或最小值。
14.根据权利要求1所述的聚簇存储方法,其特征在于,所述将待存储的第一数据的一部分缓存至所述数据库系统中的本地内存中之前,所述方法还包括:在所述存储介质中创建数据表,所述数据表用于装载所述第一数据;
其中,所述将排序后的所述第二数据聚簇存储至所述数据库系统中的存储介质中,具体包括:
将排序后的所述第二数据逐行插入所述数据表中,以将排序后的所述第二数据聚簇存储至所述存储介质中。
15.一种聚簇存储装置,应用于数据库系统中,其特征在于,在将待存储到所述数据库系统的第一数据存储到所述数据库系统的存储介质中时,包括:缓存单元,用于将待存储的第一数据一部分一部分的分别缓存至所述数据库系统中的本地内存中;
确定单元,用于获取第一排序列,所述第一排序列用于对所述本地内存中已缓存的数据进行排序;
操作单元,用于若所述缓存单元在所述本地内存中已缓存的第二数据满足预设条件,则根据所述确定单元获取的所述第一排序列,对所述第二数据进行排序,所述第二数据为所述第一数据中的已缓存至所述本地内存中的数据;
存储单元,用于重复执行将所述操作单元排序后的所述第二数据聚簇存储
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410228979.8/,转载请声明来源钻瓜专利网。