一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

历史数据自动归档方法、装置、计算机设备和存储介质与流程

2023-02-02 02:16:45 来源:中国专利 TAG:
1.本技术涉及数据归档
技术领域
:,特别是涉及一种历史数据自动归档方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
::2.随着业务量与客户数的日益增长,各个系统的历史数据越来越多,因此,对历史数据进行处理已经成为了一个热门的话题。3.目前对历史数据进行处理是通过数据库管理员人工每月或每季度运用开源工具,如pt-archiver,将数据备份后在业务低峰期进行数据归档。4.但随着涉及的数据量越来越大,即使是业务低峰期也仍然有很大的数据量,仅靠人工固定时间来操作的开源工具来进行归档越来越无法适应现在大数据归档的需求,这大大影响了对历史大数据进行归档的性能,使查询速度变慢,备份时间更长。技术实现要素:5.基于此,有必要针对上述技术问题,提供一种能够对满足大数据归档需求的历史数据自动归档方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。6.第一方面,本技术提供了一种历史数据自动归档方法。所述方法包括:7.获取所需归档的历史数据表,提取所述所需归档的历史数据表的归档时间字段;8.根据所述所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构;9.调用sqoop命令将所述所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表;10.当所述hive数据表与所述所需归档的历史数据表一致时,获取所述所需归档的历史数据表中主键值、并确定每批次删除行数;11.基于所述主键值以及所述每批次删除行数删除所述所需归档的历史数据表中的历史数据。12.在其中一个实施例中,所述方法还包括:13.根据所述归档时间字段查询所需归档行数,基于所述所需归档行数与历史数据总表总行数之比、及所述历史数据总表占历史数据总表空间的大小,预测所需归档的历史数据表占历史数据总表空间的大小;14.根据所述所需归档的历史数据表占历史数据总表空间的大小,对所需归档的历史数据表进行备份。15.在其中一个实施例中,所述根据所述所需归档的历史数据表占据历史数据总表空间的大小,对所需归档的历史数据表进行备份包括:16.当所述预测所需归档的历史数据表占历史数据总表空间的大小未超过预设空间阈值时,对所述所需归档的历史数据表进行逻辑备份;17.当所述预测所需归档的历史数据表占历史数据总表空间的大小超过预设空间阈值时,对所述所需归档的历史数据表进行物理备份。18.在其中一个实施例中,调用sqoop命令将所述所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表包括:19.调用sqoop命令将所述历史数据抽取至大数据hdfs层,并将所述大数据hdfs层的历史数据加载至大数据ods层的buf临时表;20.将已加载数据的buf临时表中历史数据融合至hive数据表结构,得到hive数据表。21.在其中一个实施例中,所述当所述hive数据表与所述所需归档的历史数据表一致时,获取所述所需归档的历史数据表中主键值、并确定每批次删除行数包括:22.当所述hive数据表与所述所需归档的历史数据表一致时,获取所述所需归档的历史数据表中主键值的最大值和最小值、以及内存刷新脏页阈值;23.根据所述所需归档行数以及所需归档的历史数据表所占历史数据总表空间的实际大小,得到所需归档的历史数据表的平均行长度;24.根据所述平均行长度以及所述内存刷新脏页阈值,确定每批次删除行数。25.在其中一个实施例中,所述基于所述主键值以及所述每批次删除行数删除所述所需归档的历史数据表中的历史数据之后,还包括:26.分析删除数据后历史数据表空间的碎片率,回收所述表空间的碎片率超过预设碎片率阈值的表空间。27.第二方面,本技术还提供了一种历史数据自动归档装置。所述装置包括:28.数据表获取模块,用于获取所需归档的历史数据表,提取所述所需归档的历史数据表的归档时间字段;29.建表模块,用于根据所述所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构;30.数据加载模块,用于调用sqoop命令将所述所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表;31.参数获取模块,当所述hive数据表与所述所需归档的历史数据表一致时,获取所述所需归档的历史数据表中主键值、并确定每批次删除行数;32.数据删除模块,基于所述主键值以及所述每批次删除行数删除所述所需归档的历史数据表中的历史数据。33.第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:34.获取所需归档的历史数据表,提取所述所需归档的历史数据表的归档时间字段;35.根据所述所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构;36.调用sqoop命令将所述所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表;37.当所述hive数据表与所述所需归档的历史数据表一致时,获取所述所需归档的历史数据表中主键值、并确定每批次删除行数;38.基于所述主键值以及所述每批次删除行数删除所述所需归档的历史数据表中的历史数据。39.第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:40.获取所需归档的历史数据表,提取所述所需归档的历史数据表的归档时间字段;41.根据所述所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构;42.调用sqoop命令将所述所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表;43.当所述hive数据表与所述所需归档的历史数据表一致时,获取所述所需归档的历史数据表中主键值、并确定每批次删除行数;44.基于所述主键值以及所述每批次删除行数删除所述所需归档的历史数据表中的历史数据。45.第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:46.获取所需归档的历史数据表,提取所述所需归档的历史数据表的归档时间字段;47.根据所述所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构;48.调用sqoop命令将所述所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表;49.当所述hive数据表与所述所需归档的历史数据表一致时,获取所述所需归档的历史数据表中主键值、并确定每批次删除行数;50.基于所述主键值以及所述每批次删除行数删除所述所需归档的历史数据表中的历史数据。51.上述历史数据自动归档方法、装置、计算机设备、存储介质和计算机程序产品,首先获取所需归档的历史数据表,提取所述所需归档的历史数据表的归档时间字段;根据所述所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构;再调用sqoop命令将所述所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表,调用sqoop命令得到的hive数据表可供对被删除的历史数据进行快速的查询;当所述hive数据表与所述所需归档的历史数据表一致时,获取所述所需归档的历史数据表中主键值、并确定每批次删除行数;基于主键值以及每批次删除行数删除所述所需归档的历史数据表中的数据,删除数据后,历史数据库内原有历史数据就会减少、对剩下的历史数据进行分析的速度也会变快;对历史数据进行大数据同步和删除,使查询速度更快,备份时间更短,能够满足大数据归档的需求。附图说明52.图1为一个实施例中历史数据自动归档方法的应用环境图;53.图2为一个实施例中历史数据自动归档方法的流程示意图;54.图3为另一个实施例中历史数据自动归档方法的流程示意图;55.图4为又一个实施例中历史数据自动归档方法的流程示意图;56.图5为又一个实施例中历史数据自动归档方法的流程示意图;57.图6为一个实施例中历史数据自动归档装置的结构框图;58.图7为一个实施例中计算机设备的内部结构图。具体实施方式59.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。60.本技术实施例提供的历史数据自动归档方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。首先,终端102发送历史数据自动归档请求至服务器104,历史数据自动归档请求中含有所需归档的历史数据表信息,服务器104接收到终端102传来的历史数据自动归档请求,从历史数据自动归档请求中提取所需归档的历史数据表信息,并从所需归档的历史数据表中提取所需归档的历史数据表的归档时间字段;根据所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构;调用sqoop命令将所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表;当hive数据表与所需归档的历史数据表一致时,获取所需归档的历史数据表中主键值、并确定每批次删除行数;基于主键值以及每批次删除行数来删除所需归档的历史数据表中的历史数据。更进一步地,服务器104还可以把删除所需归档的历史数据表中的历史数据后剩下的历史数据表反馈给终端102。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机与平板电脑,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。61.在一个实施例中,如图2所示,提供了一种历史数据自动归档方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:62.s100,获取所需归档的历史数据表,提取所需归档的历史数据表的归档时间字段。63.其中,归档是指将处理完并且具有保存价值的事情或文件经系统整理后上交保存备案的过程,本技术是指对历史数据进行整理并上交至大数据保存备案;所需归档的历史数据表是从原有的历史数据总表中提取需要进行归档的历史数据表;归档时间字段是指对历史数据进行归档的时间。64.示例性地,所需归档的历史数据表信息为距今30天之前的历史数据表信息,此时,终端102发送历史数据自动归档请求至服务器104,历史数据自动归档请求中含有所需归档的历史数据表信息,服务器104接收到终端102传来的历史数据自动归档请求,从历史数据自动归档请求中提取所需归档的历史数据表信息,即提取距今30天之前的历史数据表信息,并从距今30天之前的历史数据表信息中提取所需归档的历史数据表的归档时间字段。65.更进一步地,所需归档的历史数据表信息包括但不限于为距今30天之前的历史数据表信息。66.s200,根据所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构。67.其中,hive是一个构建在hadoop上的数据仓库工具(框架),可以将结构化的数据文件映射成一张数据表,并可以对数据文件进行读、写以及管理。hive数据表结构是指对mysql(mystructuredquerylanguage,关系型数据库管理系统)源端所需归档的历史数据表进行映射后以hive文件形式存储的且不包含数据的数据表结构。68.具体地,将所需归档的历史数据表结构映射到目标端,并以归档时间字段进行分区,得到目标端(大数据端)的hive数据表结构。69.更进一步地,以归档时间字段进行分区,将所需归档的历史数据表结构映射到目标端需要:70.①原有字段一一映射,字段名不变;71.②字段类型需做转换,mysql源端所需归档的历史数据表字段类型与hive数据表结构的字段类型的映射关系如下:varchar转换成string、datetime转换成string、text转换成string、timestamp转换成string、带位数的bigint转换成不带位数的bigint、带位数的int转换成不带位数int、char转换成不带位数int。72.③除了原有的字段外,增加archive_date归档时间为分区字段,其中归档时间格式为yyyymmdd;73.示例性地,mysql源端的表结构代码包括但不限于如下:74.createtable`test`(`id`bigint(16)notnullcomment'主键id',`c_1`datetime(6)defaultnull,`c_2`varchar(32)defaultnull,`c_3`int(11)defaultnull,primarykey(`id`)usingbtree)engine=innodbdefaultcharset=utf8mb4row_format=dynamic;75.那么在大数据中创建hive表结构的语句包括但不限于为:76.createtable`test`(`id`bigintcomment'主键id',`c_1`string,`c_2`string,`c_3`int)partitionedby(archive_datestringcomment'归档日期,格式为yyyymmdd')。77.s300,调用sqoop命令将所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表。78.其中,sqoop是一款开源的工具,主要用于在hadoop(hive)与传统的数据库(mysql、postgresql等)间进行数据的传递,可以将一个关系型数据库(mysql、oracle和postgres等)中的数据导进到hadoop即大数据的hdfs层中,也可以将hdfs的数据导进到关系型数据库中。79.具体地,建立好hive数据表结构后,服务器104通过利用sqoop开源工具在hive目标端与mysql源端进行数据的传递,即将mysql源端所需归档的历史数据表中的历史数据抽取、并加载到hive目标端的hive数据表结构,得到一个完整的hive数据表。80.s400,当hive数据表与所需归档的历史数据表一致时,获取所需归档的历史数据表中主键值、并确定每批次删除行数。81.其中,主键是一个列或多列的组合,主要是用于与其他表的外键关联、以及文本记录的修改与删除,主键值能唯一地标识表中的每一行,通过它可强制表的实体完整性。82.具体地,当hive数据表与所需归档的历史数据表一致,所需归档的历史数据表被完全同步至hive目标端即大数据的hive数据表里时,进行所需归档的历史数据表的删除操作,此时需要查询所需归档的历史数据表的表结构,获取满足归档条件的主键值,并确定在分批删除所需归档的历史数据时每批需删除的行数。83.s500,基于主键值以及每批次删除行数删除所需归档的历史数据表中的历史数据。84.具体地,当需要删除所需归档的历史数据表中历史数据时,判断数据库当前实例脏页大小(脏页数*16kb)是否未超过内存刷新脏页阈值,同时主从延迟时间是否未超过预设主从延迟时间阈值,当数据库当前实例脏页大小以及主从延迟时间均未超阈值时,通过主键值以及在分批删除所需归档的历史数据时每批需删除的行数,对所需归档的历史数据表中的历史数据进行分批删除,删除条件是满足主从延迟时间小于预设主从延迟时间阈值且所需归档的历史数据表中主键值落在主键值最大值和最小值之间就进行删除,删除后程序休眠一定时间,再次循环判断,直至历史数据全部删除完毕。85.示例性地,基于主键值以及每批次删除行数删除所需归档的历史数据表中的历史数据的程序包括但不限于:86.deletefromfrom`employees`.`departments`forceindex(`primary`)wherecreate_time《'xxx'andid》=id1andid《=id2limitn。87.上述历史数据自动归档方法中,首先获取所需归档的历史数据表,提取所需归档的历史数据表的归档时间字段;根据所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构;再调用sqoop命令将所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表,调用sqoop命令得到的hive数据表可供对被删除的历史数据进行快速的查询;当hive数据表与所需归档的历史数据表一致时,获取所需归档的历史数据表中主键值、并确定每批次删除行数;基于主键值以及每批次删除行数删除所需归档的历史数据表中的数据,删除数据后,历史数据库内原有历史数据就会减少、对剩下的历史数据进行分析的速度也会变快;对历史数据进行大数据同步和删除,使查询速度更快,备份时间更短,能够满足大数据归档的需求。88.在一个实施例中,历史数据自动归档方法还包括:89.根据归档时间字段查询所需归档行数,基于所需归档行数与历史数据总表总行数之比、及历史数据总表占历史数据总表空间的大小,预测所需归档的历史数据表占历史数据总表空间的大小。90.其中,表空间是数据库的逻辑划分,一个表空间只能属于一个数据库,所有的数据库对象都存放在指定的表空间中,但主要存放的是表,所以称作表空间。91.具体地,所需归档的历史数据在归档时都会被指定归档时间字段,根据归档时间字段以及其它条件来查询所需归档的历史数据的所需归档行数,将所需归档的历史数据的所需归档行数与历史数据库总表的行数进行对比,得到所需归档行数与历史数据总表总行数之比,所需归档行数与历史数据总表总行数之比可以看成是所需归档的历史数据表与历史数据总表之比,再通过对历史数据总表占历史数据总表空间的大小的分析,结合所需归档的历史数据表与历史数据总表之比,可以预测所需归档的历史数据表占历史数据总表空间的大小。92.更进一步地,其它条件是指一些数据归档时所需要的特定条件,如状态status字段为成功或者失败这种最终状态的数据。93.根据所需归档的历史数据表占历史数据总表空间的大小,对所需归档的历史数据表进行备份。94.其中,备份指的是将文件系统或数据库系统中的数据加以复制,然后将其保存到另外一个安全的地方,一旦发生一些难以预料意外灾难或错误操作时,可以通过这个备份来快速将这些数据还原到备份时正常的状态,从而确保系统能够快速恢复正常稳定运行,但备份时效性较低,并且不能随时查看备份中的内容,主要用途是为了保护数据安全。95.具体地,根据所需归档的历史数据表占历史数据总表空间的大小,选择所需归档的历史数据表占历史数据总表空间的大小对应的备份方式对所需归档的历史数据表进行备份。96.本实施例中,通过对所需归档的历史数据表进行备份,能够实现历史数据的可恢复。97.在一个实施例中,根据所需归档的历史数据表占历史数据总表空间的大小,对所需归档的历史数据表进行备份包括:98.当预测所需归档的历史数据表占历史数据总表空间的大小未超过预设空间阈值时,对所需归档的历史数据表进行逻辑备份。99.其中,预设空间阈值是指预设所需归档的历史数据表占历史数据总表空间的大小的值;逻辑备份是利用mysql数据库自带的mysqldump命令,或者使用第三方的工具,把数据库里的数据以sql语句的方式导出成文件的形式,在需要恢复数据时,通过使用相关的命令将备份文件里的sql语句提取出来重新在数据库中执行一遍,从而达到恢复数据的目的。100.示例性地,令预设空间阈值为5g,当所需归档的历史数据表占历史数据总表空间的大小不超过5g时,则用mysqldump逻辑备份工具或mydumper逻辑备份所需归档数据,生成sql语句,再导出为文件。101.可选地,预设空间阈值包括但不限于为5g。102.当预测所需归档的历史数据表占历史数据总表空间的大小超过预设空间阈值时,对所需归档的历史数据表进行物理备份。103.其中,物理备份就是利用命令(如cp、tar、scp等)直接将数据库的存储数据文件复制一份或多份,分别存放在其它目录,以达到备份的效果。104.示例性地,令预设空间阈值为5g,当所需归档的历史数据表占历史数据总表空间的大小超过5g时,通过xtrabackup在线热备份归档表全量数据,得到全表的ibd文件。105.可选地,预设空间阈值包括但不限于为5g。106.本实施例中,通过以所需归档的历史数据表占历史数据总表空间的大小来区分物理备份或逻辑备份,使大数据量的历史数据表用物理备份、小数据量的历史数据表用逻辑备份,来实现历史数据的快速恢复。107.在一个实施例中,如图3所示,s300包括:108.s320,调用sqoop命令将历史数据抽取至大数据hdfs层,并将大数据hdfs层的历史数据加载至大数据ods层的buf临时表。109.其中,数据在hdfs(hadoop分布式文件系统)上时,还只是单纯的数据,并没有能让我们直接操作,需要将这些数据放入到能够对数据进行操作的框架中,即ods(操作数据处理)层,ods层是用于将hdfs上的数据在不丢失数据内容的情况下原封不动的从hdfs中读取出来放入hive中进行分析;buf临时表是一个临时存放历史数据的表。110.具体地,建立hive数据表结构后,需要将所需归档的历史数据表中的历史数据传递到hive数据表结构中,由于hdfs层上只是用来存储抽取的历史数据,ods层才用于加载hdfs层历史数据并对hdfs层历史数据进行操作,所以调用sqoop开源工具将所需归档的历史数据的只读实例先抽取到大数据的hdfs层,再将hdfs层的历史数据加载至大数据ods层便于后续查询分析,此时是加载至大数据ods层的buf临时表。111.示例性地,将支付流水历史表(make_loan_order_history)归档截止到距今30天的数据,业务字段为opt_datetime,那么查询距今30天的历史数据代码可为:112.select*frommake_loan_order_historywhereopt_datetime《date_format(date_sub(now(),interval(30)day),'%y-%m-%d');113.最终的sqoop语句如下:114.sqoopimport-dyarn.app.mapreduce.am.resource.mb=${am_memory_mb}\[0115]-dmapreduce.map.memory.mb=${map_memory_mb}\[0116]-dorg.apache.sqoop.splitter.allow_text_splitter=true\[0117]‑‑connect${db_url}/${db}\[0118]‑‑username${user}\[0119]‑‑password${passwd}\[0120]‑‑num-mappers1\[0121]‑‑null-string”\[0122]‑‑null-non-string”\[0123]‑‑query"select*frommake_loan_order_historywhereopt_datetime《date_format(date_sub(now(),interval(30)day),'%y-%m-%d')and\$conditions"\[0124]‑‑target-dir${dest_base_path}/${db}/make_loan_order_history\[0125]‑‑delete-target-dir\[0126]‑‑fields-terminated-by'\001'\[0127]‑‑hive-drop-import-delims\[0128]‑‑escaped-by'\\'[0129]其中参数变量说明如下:[0130]①am_memory_mb、map_memory_mb为yarn运行参数,一般固定不变;[0131]②db_url、db、user、passwd的含义分别为mysql源端数据库连接地址、数据库名、用户名、密码;[0132]③dest_base_path为hdfs中转目录。[0133]抽取所需归档的历史数据表中的历史数据至hdfs层后,执行load和merge操作,将hdfs的历史数据加载至ods层的buf临时表,具体代码包括但不限于如下:[0134]loaddatainpath'${hdfs_base_dir}/${data_dirname}/make_loan_order_history'overwriteintotable${dbname}.make_loan_order_history_buf。[0135]s340,将已加载数据的buf临时表中历史数据融合至hive数据表结构,得到hive数据表。[0136]其中,hive数据表是指对mysql源端历史数据表进行映射后以hive文件形式存储的且加载有历史数据数据的数据表。[0137]具体地,由于之前建立的hive数据表结构中不含历史数据,只是对mysql源端历史数据表的结构映射,此时将已加载数据的buf临时表中历史数据融合至hive数据表结构,就可以得到最终的hive数据表,hive数据表可以用于对加载至ods层的hdfs层历史数据进行查询。[0138]更进一步地,为了得到最终的hive数据表,还需对比mysql源端历史数据表与映射的hive数据表是否一致,避免出现历史数据映射过程中的错误,在进行mysql源端历史数据表与映射的hive数据表的对比时,首先进行行数的对比,分别在mysql源端和hive目标端执行行数查询语句;行数对比无误后,再对比对应行的具体数据,无误后即到最终的hive数据表,完成将所需归档的历史数据表同步至hive目标端的操作。[0139]示例性地,将支付流水历史表(make_loan_order_history)归档截止到距今30天的数据,将已加载数据的buf临时表中历史数据融合至hive数据表结构的语句包括但不限于是:[0140]insertoverwrite${dbname}.make_loan_order_history(${paymentdb[$tbl]})select${paymentdb[$tbl]}from${dbname}.make_loan_order_history_buf;[0141]查询mysql源端行数语句包括但不限于是:[0142]selectcount(1)frommake_loan_order_historywhereopt_datetime《date_format(date_sub(now(),interval(30)day),'%y-%m-%d');[0143]查询hive目标端行数语句包括但不限于是:[0144]selectcount(1)frommake_loan_order_historywhereopt_datetime《to_date(date_sub(now(),30))。[0145]本实施例中,通过在大数据里建立与所需归档的历史数据表一致的hive数据表,能够实现历史数据的同步,使历史数据即使删除也能在大数据上实时快速的查询。[0146]在一个实施例中,如图4所示,s400包括:[0147]s420,当hive数据表与所需归档的历史数据表一致时,获取所需归档的历史数据表中主键值的最大值和最小值、以及内存刷新脏页阈值。[0148]其中,脏页是指内存中的数据和磁盘不一致,内存刷新脏页是指将内存中的脏页按照某种规则刷新到磁盘中,内存刷新脏页阈值是指内存中需要刷新脏页的大小,一般被用来判断是否数据库是否繁忙,通常内存刷新脏页阈值的默认值为数据库实例内存池的1/10大小。[0149]具体地,查看所需归档的历史数据表的表结构,获取满足归档条件的主键值中的最小值id1和最大值id2。[0150]示例性地,获取满足归档条件的主键值中的最小值id1和最大值id2的程序包括但不限于为:[0151]#开启事务[0152]setautocommit=0;[0153]#获取满足条件的主键值最小值和最大值[0154]selectmin(id)asid1,max_idasid2from`employees`.`departments`forceindex(`primary`)wherecreate_time《'xxx'。[0155]s440,根据所需归档行数以及所需归档的历史数据表所占历史数据总表空间的实际大小,得到所需归档的历史数据表的平均行长度。[0156]具体地,由于所需归档的历史数据表的平均行长度与所需归档行数的乘积即为所需归档的历史数据表所占历史数据总表空间的实际大小,所以根据所需归档行数以及所需归档的历史数据表所占历史数据总表空间的实际大小,可以得到所需归档的历史数据表的平均行长度。[0157]s460,根据平均行长度以及内存刷新脏页阈值,确定每批次删除行数。[0158]具体地,得到平均行长度后,根据平均行长度以及内存刷新脏页阈值,用内存刷新脏页阈值除以平均行长度,即可得到每批次删除行数。[0159]本实施例中,通过确定内存刷新脏页阈值以及平均行长度,能够得到每批次的删除行数,实现删除数据时兼顾稳定性又保证清理速度。[0160]在一个实施例中,如图5所示,s500之后,还包括:[0161]s600,分析删除数据后历史数据表空间的碎片率,回收表空间的碎片率超过预设碎片率阈值的表空间。[0162]其中,表空间的碎片率就是指表空间的空洞占表空间的大小;表空间空洞是指数据删除之后,原本连续的空间中出现的空白的区域。[0163]具体地,扫描并分析删除所需归档的历史数据表后的表空间的碎片率,判断表空间的碎片率阈值是否超过预设碎片率阈值,当超过预设碎片率阈值时,就回收删除历史数据后的表空间,降低表空间的碎片率。[0164]示例性地,扫描数据库获取表空间碎片率超过预设碎片率阈值的表的程序包括但不限于:[0165]select[0166]table_schemaas`db`,[0167]table_nameas`tbl`,concat(truncate((data_length)/1024/1024,2),'mb'),concat(truncate((index_length)/1024/1024,2),'mb'),concat(truncate((data_free)/1024/1024,2),'mb'),[0168]1-(table_rows*avg_row_length)/([0169]data_length index_length data_free)as`fragment_pct`[0170]from[0171]information_schema.tables[0172]where[0173]table_schemanotin([0174]'information_schema','mysql','performance_schema','sys')[0175]and(1-(table_rows*avg_row_length)/(data_length index_length data_free))》0.5[0176]and(data_length index_length data_free)》1024*1024*1024。[0177]本实施例中,通过对碎片率超过预设碎片率阈值的表进行表空间回收操作,能够及时释放磁盘物理空间,并提高数据库性能。[0178]应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。[0179]基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的历史数据自动归档方法的历史数据自动归档装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个历史数据自动归档装置实施例中的具体限定可以参见上文中对于历史数据自动归档方法的限定,在此不再赘述。[0180]在一个实施例中,如图6所示,提供了一种历史数据自动归档装置,包括:数据表获取模块100、建表模块200、数据加载模块300、参数获取模块400和数据删除模块500,其中:[0181]数据表获取模块100,用于获取所需归档的历史数据表,提取所需归档的历史数据表的归档时间字段。[0182]建表模块200,用于根据所需归档的历史数据表,以归档时间字段进行分区,建立目标端的hive数据表结构。[0183]数据加载模块300,用于调用sqoop命令将所需归档的历史数据表中的历史数据抽取、并加载至hive数据表结构,得到hive数据表。[0184]参数获取模块400,当hive数据表与所需归档的历史数据表一致时,获取所需归档的历史数据表中主键值、并确定每批次删除行数。[0185]数据删除模块500,基于主键值以及每批次删除行数删除所需归档的历史数据表中的历史数据。[0186]在一个实施例中,还包括数据备份模块,数据备份模块还用于:根据归档时间字段查询所需归档行数,基于所需归档行数与历史数据总表总行数之比、及历史数据总表占历史数据总表空间的大小,预测所需归档的历史数据表占历史数据总表空间的大小;根据所需归档的历史数据表占历史数据总表空间的大小,对所需归档的历史数据表进行备份。[0187]在一个实施例中,数据备份模块还用于:当预测所需归档的历史数据表占历史数据总表空间的大小未超过预设空间阈值时,对所需归档的历史数据表进行逻辑备份;当预测所需归档的历史数据表占历史数据总表空间的大小超过预设空间阈值时,对所需归档的历史数据表进行物理备份。[0188]在一个实施例中,数据加载模块300还用于:调用sqoop命令将历史数据抽取至大数据hdfs层,并将大数据hdfs层的历史数据加载至大数据ods层的buf临时表;将已加载数据的buf临时表中历史数据融合至hive数据表结构,得到hive数据表。[0189]在一个实施例中,参数获取模块400还用于:当hive数据表与所需归档的历史数据表一致时,获取所需归档的历史数据表中主键值的最大值和最小值、以及内存刷新脏页阈值;根据所需归档行数以及所需归档的历史数据表所占历史数据总表空间的实际大小,得到所需归档的历史数据表的平均行长度;根据平均行长度以及内存刷新脏页阈值,确定每批次删除行数。[0190]在一个实施例中,还包括空间释放模块,空间释放模块还用于:分析删除数据后历史数据表空间的碎片率,回收表空间的碎片率超过预设碎片率阈值的表空间。[0191]上述历史数据自动归档装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。[0192]在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括处理器、存储器、输入/输出接口(input/output,简称i/o)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储所需归档的历史数据表数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种历史数据自动归档方法。[0193]本领域技术人员可以理解,图7中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。[0194]在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。[0195]在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。[0196]在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。[0197]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistiverandomaccessmemory,mram)、铁电存储器(ferroelectricrandomaccessmemory,fram)、相变存储器(phasechangememory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。[0198]以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。[0199]以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献