一种海量数据的更新方法及装置技术领域
本发明属于数据库技术领域,尤其是涉及一种海量数据的更新方法及装置。
背景技术
大数据是指一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软
件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价
值密度低四大特征。
大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数
据进行专业化处理。换而言之,如果把大数据比作一种产业,那么这种产业实现盈利的关
键,在于提高对数据的“加工能力”,通过“加工”实现数据的“增值”。随着云时代的来临,大
数据也吸引了越来越多的关注。分析师团队认为,大数据通常用来形容一个公司创造的大
量非结构化数据和半结构化数据,这些数据在下载到关系型数据库用于分析时会花费过多
时间和金钱。随着数据不断的积累,海量数据的批量更新就显得愈发重要。在企业的业务应
用中,随着单表的数据量越来越大,单表的条数甚至达到百亿级,因此批量更新数据变得愈
发耗时,执行效率也愈发低下。
对于非常大的表,一次批量更新的数据量就会非常大,现有技术中,是采用单线程
进行更新,按照block的顺序串行更新,当面对海量数据时,批量更新会非常耗时,严重影响
业务的正常执行,并且未充分利用系统资源,造成资源浪费。
发明内容
本发明提供了一种海量数据的更新方法及装置,以解决现有技术中海量数据更新
需要消耗较长时间的技术问题。
一方面,本发明实施例提供了一种海量数据的更新方法,包括:
将所述更新线程按照所述系统的处理能力分为多个子线程
将待更新数据按照所述子线程的处理能力分为多个区块,并控制每个子线程更新
对应的区块。
进一步的,所述控制每个子线程更新对应的区块,包括:
获取每个区块的存储偏移量;
按照所述存储偏移量控制每个子线程更新对应的区块。
进一步的,所述控制每个子线程更新对应的区块,包括:
检测每个区块是否被更新命中;
在区块未被更新命中时,跳过所述区块。
进一步的,述将待更新数据按照所述子线程的处理能力分为多个区块,包括:
所述将待更新数据按照所述子线程的处理能力对应的行数分为多个区块。
更进一步的,所述将待更新数据按照所述子线程的处理能力分为多个区块,包括:
在更新多列数据时,将所有列数据按照所述子线程的处理能力对应的行数分为多
个区块。
另一方面,本发明实施例还提供了一种海量数据的更新装置,包括:
子线程划分单元,用于将所述更新线程按照所述系统的处理能力分为多个子线
程;
更新单元,用于将待更新数据按照所述子线程的处理能力分为多个区块,并控制
每个子线程更新对应的区块。
进一步的,所述更新单元用于:
获取每个区块的存储偏移量;
按照所述存储偏移量控制每个子线程更新对应的区块。
进一步的,所述更新单元用于:
检测每个区块是否被更新命中;
在区块未被更新命中时,跳过所述区块。
进一步的,所述更新单元包括:
区块划分子单元,用于将待更新数据按照所述子线程的处理能力对应的行数分为
多个区块。
更进一步的,所述区块划分子单元用于:
在更新多列数据时,将所有列数据按照所述子线程的处理能力对应的行数分为多
个区块。
本发明实施例提供的海量数据的更新方法及装置,通过将更新线程按照处理能力
分为多个子线程,并并行对数据区块同时进行更新处理,可以充分利用系统运算资源,减少
了海量数据的更新处理时间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中
所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实
施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附
图获得其他的附图。
图1是本发明实施例一提供的海量数据的更新方法的流程示意图;
图2是本发明实施例一提供的海量数据的更新方法中并行更新示意图;
图3是本发明实施例二提供的海量数据的更新方法的流程示意图;
图4是本发明实施例二提供的海量数据的更新方法中多维并行更新示意图;
图5是本发明实施例三提供的海量数据的更新装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发
明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施
例,都属于本发明保护的范围。
实施例一
图1为本发明实施例一提供的海量数据的更新方法的流程图,本实施例可适用于
对海量数据进行更新的情况,该方法可以由海量数据的更新装置来执行,该装置可由软件/
硬件方式实现,并可集成于数据库系统中。
参见图1,所述海量数据的更新方法,包括:
S110,将所述更新线程按照所述系统的处理能力分为多个子线程。
当一个程序启动时,就有一个进程被操作系统(OS)创建,与此同时一个线程也立
刻运行,该线程通常叫做程序的主线程(Main Thread),因为它是程序开始时就执行的,如
果你需要再创建线程,那么创建的线程就是这个主线程的子线程。每个进程至少都有一个
主线程。子线程的数量由系统的硬件处理能力决定。示例性的,根据中央处理器频率、缓存
大小和内存大小等决定。硬件处理能力越强,子线程的数量越多。
S120,将待更新数据按照所述子线程的处理能力分为多个区块,并控制每个子线
程更新对应的区块。
图2是本发明实施例一提供的海量数据的更新方法中并行更新示意图,可参考图
2,按照子线程的处理能力确定区块的大小,示例性的,对于列存数据库,可以确定单次每个
线程所处理的行数多少,按照所述行数分为多个区块。例如:以65536行数据为一个block,
进行分块管理。每个子线程对对应的区块进行更新处理。
本实施例通过将更新线程按照处理能力分为多个子线程,并并行对数据区块同时
进行更新处理,可以充分利用系统运算资源,减少了海量数据的更新处理时间。
在本实施例的一个优选实施方式中,将所述控制每个子线程更新对应的区块,具
体优化为:获取每个区块的存储偏移量;按照所述存储偏移量控制每个子线程更新对应的
区块。由于海量数据按照顺序进行存储,在确定每个区块的大小后,可以根据所述区块的大
小计算存储海量数据区块的相对偏移量,并根据偏移量控制每个子线程进行更新对应的区
块,可以方便对区块进行查找,减少查找区块地址的工作量。
在本实施例的一个优选实施方式中,所述控制每个子线程更新对应的区块,还可
包括:检测每个区块是否被更新命中;在区块未被更新命中时,跳过所述区块。根据地址确
定每个区块是否被命中,如果没有命中,则说明该区块不在更新的数据范围内,跳过未命中
的区块。提升数据更新的效率。
实施例二
图3是本发明实施例二提供的海量数据的更新方法的流程示意图,本发明实施例
以上述实施例为基础,进一步的,将所述将待更新数据按照所述子线程的处理能力分为多
个区块,进一步优化为:在更新多列数据时,将所有列数据按照所述子线程的处理能力对应
的行数分为多个区块。
参见图2,所述海量数据的更新方法,包括:
S210,将所述更新线程按照所述系统的处理能力分为多个子线程。
S220,在更新多列数据时,将所有列数据按照所述子线程的处理能力对应的行数
分为多个区块,并控制每个子线程更新对应的区块。
当同时更新多列数据时,该方法不需要等待某一列数据完全更新完成后再去更新
下一列及后续列数据,而是把当前所有更新列当成一个整体进行更新。图4是本发明实施例
二提供的海量数据的更新方法中多维并行更新示意图。参见图4,假如当前更新的线程有4
个,每列的block有6个,那么当block1~block4更新完时,thread1继续更新block5,
thread2继续更新block6,thread3会继续更新下一列的block1,以此类推。这样就会保证资
源的高效使用,同时也会提高更新的整体效率。
本实施例通过将所述将待更新数据按照所述子线程的处理能力分为多个区块,进
一步优化为:在更新多列数据时,将所有列数据按照所述子线程的处理能力对应的行数分
为多个区块。可以在多列数据进行更新时,保证资源的高效使用,同时也会提高更新的整体
效率。
实施例三
图5是本发明实施例三提供的海量数据的更新装置的结构示意图,如图5所示,所
述装置包括:
子线程划分单元310,用于将所述更新线程按照所述系统的处理能力分为多个子
线程;
更新单元320,用于将待更新数据按照所述子线程的处理能力分为多个区块,并控
制每个子线程更新对应的区块。
本实施例提供的海量数据的更新装置,通过将更新线程按照处理能力分为多个子
线程,并并行对数据区块同时进行更新处理,可以充分利用系统运算资源,减少了海量数据
的更新处理时间。
进一步的,所述更新单元用于:
获取每个区块的存储偏移量;
按照所述存储偏移量控制每个子线程更新对应的区块。
进一步的,所述更新单元用于:
检测每个区块是否被更新命中;
在区块未被更新命中时,跳过所述区块。
进一步的,所述更新单元包括:
区块划分子单元,用于将待更新数据按照所述子线程的处理能力对应的行数分为
多个区块。
更进一步的,所述区块划分子单元用于:
在更新多列数据时,将所有列数据按照所述子线程的处理能力对应的行数分为多
个区块。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通
过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程
序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或
者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽
管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依
然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进
行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术
方案的范围。