一种数据清理方法及装置制造方法及图纸

技术编号:18458708 阅读:22 留言:0更新日期:2018-07-18 12:40
本发明专利技术公开了一种数据清理方法及装置,属于数据库应用技术领域。该方法通过对目标表加共享更新排他锁,阻止系统对目标表的DDL操作,然后建立临时表和临时索引,将目标表中的数据复制到临时表中,并根据临时表中的数据生成索引信息,之后对目标表加访问排他锁来阻止系统对目标表的DML操作,再交换目标表和临时表中的数据以及对应的索引信息,从而完成磁盘空间的清理和回收。由于数据清理过程中绝大部分时间都是采用共享更新排他锁,不影响系统对目标表的DML操作,可以实现在几乎不阻断DML的情况下完成数据库中垃圾数据的清理,确保系统较高的可用率,改善用户使用体验。

A method and device for data cleaning

The invention discloses a data cleaning method and device, which belongs to the field of database application technology. By adding a shared update to the target table, this method prevents the system from the DDL operation on the target table, then establishes a temporary table and a temporary index, copies the data from the target table to the temporary table, and generates the index information according to the data in the temporary table. Then the target table is added to the query to prevent the system from the target table's DM L operation, and then exchange the data in the target table and the temporary table and the corresponding index information, so as to complete the clearance and recovery of the disk space. Because most of the time in the process of data cleaning is the use of shared update and exclusive lock, it does not affect the DML operation of the system to the target table. It can accomplish the cleaning of garbage data in the database without blocking the DML, so as to ensure the higher availability of the system and improve the user experience.

【技术实现步骤摘要】
一种数据清理方法及装置
本专利技术涉及数据库应用
,尤其涉及一种数据清理方法及装置。
技术介绍
PostgreSQL数据库是一种开源、实用、高效、应用广泛的通用数据库管理系统。PostgreSQL数据库在长时间运行后,系统会产生索引膨胀和垃圾数据,这些数据会占用多余的磁盘空间,增加业务的成本;同时数据膨胀也会降低系统的性能,PostgreSQL原生的VACUUMFULL可用于进行磁盘空间的清理和索引膨胀的消除。VACUUMFULL的处理流程如附图1所示,包括对PostgreSQL数据库中的源表加AccessExclusiveLock锁,然后建立临时表,将源表数据复制到临时表中,之后交换源表和临时表内容,重建源表上的索引,并删除临时表,再解除AccessExclusiveLock锁。由于VACUUMFULL一开始就对源表加了AccessExclusiveLock来阻止系统对这张表的修改,这个操作导致系统整个过程中所有针对源表的操作包括DML(DataManipulationLanguage,数据操作语言,数据操作分成数据查询和数据更新两类,数据更新又分成插入、删除、和修改三种操作)和DDL(DataDefinitionLanguage,数据定义语言,用于定义数据库模式、基本表、视图和索引的创建和撤消操作)都会被阻塞,造成严重的业务中断,影响业务服务质量。例如,对一个100G的表进行VACUUMFULL,需要3个小时左右,这个过程中,业务无法正常运行,也就是说需要中断三个小时来进行一次磁盘空间的清理和回收。
技术实现思路
本专利技术提供了一种数据清理方法及装置,以至少解决在数据清理过程中长时间不能对表数据进行操作的问题,确保系统较高的可用率。根据本专利技术的一个方面,提供了一种数据清理方法,包括:对目标表加共享更新排他锁(ShareUpdateExclusiveLock),阻止系统对目标表的数据定义语言(DDL)操作;建立临时表,所述临时表的表定义与所述目标表的表定义相同;建立临时表的临时索引,所述临时索引的属性与目标表的索引的属性相同;将所述目标表的数据复制到所述临时表中,根据临时表中的数据在临时索引中生成索引信息;对所述目标表加访问排他锁(AccessExclusiveLock),阻止系统对目标表的数据操作语言(DML)操作;交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的索引信息;解除所述目标表上的共享更新排他锁和访问排他锁。本专利技术另一方面提供了一种数据清理装置,包括:第一加锁单元,用于对目标表加共享更新排他锁,阻止系统对目标表的数据定义语言操作;临时表建立单元,用于建立临时表,所述临时表的表定义与所述目标表的表定义相同;临时索引建立单元,用于建立临时表的临时索引,所述临时索引的属性与目标表的索引的属性相同;数据处理单元,用于将所述目标表的数据复制到所述临时表中,根据临时表中的数据在临时索引中生成索引信息;第二加锁单元,用于对所述目标表加访问排他锁,阻止系统对目标表的数据操作语言操作;数据交换单元,用于交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的索引信息;解锁单元,用于解除所述目标表上的共享更新排他锁和访问排他锁。本专利技术提出一种数据清理方法和装置,通过对目标表加共享更新排他锁,阻止系统对目标表的DDL操作,然后建立临时表和临时索引,将目标表中的数据复制到临时表中,并根据临时表中的数据生成索引信息,之后对目标表加访问排他锁来阻止系统对目标表的DML操作,再交换目标表和临时表中的数据以及对应的索引信息,从而完成磁盘空间的清理和回收。由于数据清理过程中绝大部分时间都采用共享更新排他锁,不影响系统对目标表的DML操作,因此在进行数据清理的绝大部分时间中数据库的DML操作都可以正常运行,确保系统较高的可用率;本方案仅在交换目标表和临时表中的数据和对应的索引信息期间,为目标表加上访问排他锁来阻止对目标表的DML操作,由于交换数据的耗时为秒级,业务中断时间可以忽略不计,从而能够极大地改善用户使用体验。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。图1是采用PostgreSQL原生的VACUUMFULL进行数据清理的方法流程图;图2是根据本专利技术实施例的数据清理方法的计算机终端的硬件结构框图;图3是根据本专利技术实施例1的数据清理方法的流程图;图4是根据本专利技术实施例1的将目标表的数据复制到临时表中并根据临时表中的数据生成索引信息的方法的流程图;图5是PostgreSQL中的锁冲突表;图6是根据本专利技术实施例1的切换数据写入模式的场景示意图;图7是根据本专利技术实施例1的DML进程与数据清理进程的同步框架示意图;图8是根据本专利技术实施例2的数据清理装置的结构框图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。实施例1根据本专利技术实施例,提供了一种数据清理方法的实施例,可用于PostgreSQL,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图2是根据本专利技术实施例的数据清理方法的计算机终端的硬件结构框图。如图2所示,计算机终端200可以包括一个或多个(图中仅示出一个)处理器202(处理器202可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器204、以及用于通信功能的传输装置206。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端200还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。存储器204可用于存储应用软件的软件程序以及模块,如本专利技术实施例中的数据清理方法对应的程序指令/模块,处理器202通过运行存储在存储器204内的软件程序以及模块,本文档来自技高网
...

【技术保护点】
1.一种数据清理方法,其特征在于,包括:对目标表加共享更新排他锁,阻止系统对目标表的数据定义语言操作;建立临时表,所述临时表的表定义与所述目标表的表定义相同;建立临时表的临时索引,所述临时索引的属性与目标表的索引的属性相同;将所述目标表的数据复制到所述临时表中,根据临时表中的数据在临时索引中生成索引信息;对所述目标表加访问排他锁,阻止系统对目标表的数据操作语言操作;交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的索引信息;解除所述目标表上的共享更新排他锁和访问排他锁。

【技术特征摘要】
1.一种数据清理方法,其特征在于,包括:对目标表加共享更新排他锁,阻止系统对目标表的数据定义语言操作;建立临时表,所述临时表的表定义与所述目标表的表定义相同;建立临时表的临时索引,所述临时索引的属性与目标表的索引的属性相同;将所述目标表的数据复制到所述临时表中,根据临时表中的数据在临时索引中生成索引信息;对所述目标表加访问排他锁,阻止系统对目标表的数据操作语言操作;交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的索引信息;解除所述目标表上的共享更新排他锁和访问排他锁。2.根据权利要求1所述的方法,其特征在于,所述建立临时表的临时索引之后还包括:设置所述临时索引的状态为不可用;将所述目标表的数据写入模式切换为追加模式,所述追加模式用于当目标表末尾的数据块写满后在目标表末尾增加一个数据块,并将新增数据写入到位于目标表末尾的数据块中。3.根据权利要求2所述的方法,其特征在于,所述将所述目标表的数据复制到所述临时表中,根据临时表中的数据在临时索引中生成索引信息,包括:将目标表中的数据复制到临时表中;统计数据复制过程中目标表中新增数据块的数量;判断所述新增数据块的数量是否小于预设阈值;若是,设置所述临时索引的状态为可用,并根据临时表中的数据在临时索引中生成索引信息;若否,将新增数据块中的数据复制到临时表中,并执行统计数据复制过程中目标表中新增数据块的数量的步骤。4.根据权利要求1所述的方法,其特征在于,所述根据临时表中的数据在临时索引中生成索引信息包括:读取临时表中的数据;对临时表中的数据进行计算,得到索引信息;将所述索引信息写入临时索引上相应指针的位置;设置临时索引中各索引信息的索引状态,所述索引状态用于标识索引信息是否可用。5.根据权利要求4所述的方法,其特征在于,所述根据临时表中的数据在临时索引中生成索引信息之后,还包括:处理在生成索引信息过程中所述目标表的新增数据。6.根据权利要求5所述的方法,其特征在于,所述处理在生成索引信息过程中所述目标表的新增数据包括:将生成索引信息过程中所述目标表的新增数据复制到临时表中;读取复制到临时表的新增数据;对复制到临时表的新增数据进行计算,得到所述新增数据的索引信息;将所述新增数据的索引信息写入临时索引上相应指针的位置;设置所述索引信息的索引状态。7.根据权利要求1所述的方法,其特征在于,所述建立临时表之后还包括:建立目标表中各数据与临时表中位置之间的对应关系;所述将所述目标表的数据复制到所述临时表中包括:逐条判断目标表中的数据是否有效;若是,根据该数据与临时表中位置的对应关系将该数据复制到临时表中对应的位置,并执行判断下一条数据是否有效的步骤;若否,忽略该数据,执行判断下一条数据是否有效的步骤。8.根据权利要求1所述的方法,其特征在于,所述方法还包括:删除所述临时表和临时索引。9.一种数据清理装置,其特征在于,包括:第一加锁单元,用于对目标表加共享更新排他锁...

【专利技术属性】
技术研发人员:李跃森
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1