CN108287835B - 一种数据清理方法及装置 - Google Patents
一种数据清理方法及装置 Download PDFInfo
- Publication number
- CN108287835B CN108287835B CN201710013109.2A CN201710013109A CN108287835B CN 108287835 B CN108287835 B CN 108287835B CN 201710013109 A CN201710013109 A CN 201710013109A CN 108287835 B CN108287835 B CN 108287835B
- Authority
- CN
- China
- Prior art keywords
- data
- temporary
- index
- target table
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000004140 cleaning Methods 0.000 title abstract description 41
- 230000008569 process Effects 0.000 claims abstract description 48
- 238000012545 processing Methods 0.000 claims description 19
- 238000012217 deletion Methods 0.000 claims description 7
- 230000037430 deletion Effects 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 6
- 230000010076 replication Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000005201 scrubbing Methods 0.000 claims description 3
- 230000003362 replicative effect Effects 0.000 claims 1
- 238000004064 recycling Methods 0.000 abstract description 4
- 230000000903 blocking effect Effects 0.000 abstract description 2
- 238000007726 management method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005034 decoration Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据清理方法及装置,属于数据库应用技术领域。该方法通过对目标表加共享更新排他锁,阻止系统对目标表的DDL操作,然后建立临时表和临时索引,将目标表中的数据复制到临时表中,并根据临时表中的数据生成索引信息,之后对目标表加访问排他锁来阻止系统对目标表的DML操作,再交换目标表和临时表中的数据以及对应的索引信息,从而完成磁盘空间的清理和回收。由于数据清理过程中绝大部分时间都是采用共享更新排他锁,不影响系统对目标表的DML操作,可以实现在几乎不阻断DML的情况下完成数据库中垃圾数据的清理,确保系统较高的可用率,改善用户使用体验。
Description
技术领域
本发明涉及数据库应用技术领域,尤其涉及一种数据清理方法及装置。
背景技术
PostgreSQL数据库是一种开源、实用、高效、应用广泛的通用数据库管理系统。PostgreSQL数据库在长时间运行后,系统会产生索引膨胀和垃圾数据,这些数据会占用多余的磁盘空间,增加业务的成本;同时数据膨胀也会降低系统的性能,PostgreSQL原生的VACUUM FULL可用于进行磁盘空间的清理和索引膨胀的消除。
VACUUM FULL的处理流程如附图1所示,包括对PostgreSQL数据库中的源表加AccessExclusiveLock锁,然后建立临时表,将源表数据复制到临时表中,之后交换源表和临时表内容,重建源表上的索引,并删除临时表,再解除AccessExclusiveLock锁。由于VACUUM FULL一开始就对源表加了AccessExclusiveLock来阻止系统对这张表的修改,这个操作导致系统整个过程中所有针对源表的操作包括DML(Data Manipulation Language,数据操作语言,数据操作分成数据查询和数据更新两类,数据更新又分成插入、删除、和修改三种操作)和DDL(Data Definition Language,数据定义语言,用于定义数据库模式、基本表、视图和索引的创建和撤消操作)都会被阻塞,造成严重的业务中断,影响业务服务质量。例如,对一个100G的表进行VACUUM FULL,需要3个小时左右,这个过程中,业务无法正常运行,也就是说需要中断三个小时来进行一次磁盘空间的清理和回收。
发明内容
本发明提供了一种数据清理方法及装置,以至少解决在数据清理过程中长时间不能对表数据进行操作的问题,确保系统较高的可用率。
根据本发明的一个方面,提供了一种数据清理方法,包括:
对目标表加共享更新排他锁(ShareUpdateExclusiveLock),阻止系统对目标表的数据定义语言(DDL)操作;
建立临时表,所述临时表的表定义与所述目标表的表定义相同;
建立临时表的临时索引,所述临时索引的属性与目标表的索引的属性相同;
将所述目标表的数据复制到所述临时表中,根据临时表中的数据在临时索引中生成索引信息;
对所述目标表加访问排他锁(AccessExclusiveLock),阻止系统对目标表的数据操作语言(DML)操作;
交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的索引信息;
解除所述目标表上的共享更新排他锁和访问排他锁。
本发明另一方面提供了一种数据清理装置,包括:
第一加锁单元,用于对目标表加共享更新排他锁,阻止系统对目标表的数据定义语言操作;
临时表建立单元,用于建立临时表,所述临时表的表定义与所述目标表的表定义相同;
临时索引建立单元,用于建立临时表的临时索引,所述临时索引的属性与目标表的索引的属性相同;
数据处理单元,用于将所述目标表的数据复制到所述临时表中,根据临时表中的数据在临时索引中生成索引信息;
第二加锁单元,用于对所述目标表加访问排他锁,阻止系统对目标表的数据操作语言操作;
数据交换单元,用于交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的索引信息;
解锁单元,用于解除所述目标表上的共享更新排他锁和访问排他锁。
本发明提出一种数据清理方法和装置,通过对目标表加共享更新排他锁,阻止系统对目标表的DDL操作,然后建立临时表和临时索引,将目标表中的数据复制到临时表中,并根据临时表中的数据生成索引信息,之后对目标表加访问排他锁来阻止系统对目标表的DML操作,再交换目标表和临时表中的数据以及对应的索引信息,从而完成磁盘空间的清理和回收。由于数据清理过程中绝大部分时间都采用共享更新排他锁,不影响系统对目标表的DML操作,因此在进行数据清理的绝大部分时间中数据库的DML操作都可以正常运行,确保系统较高的可用率;本方案仅在交换目标表和临时表中的数据和对应的索引信息期间,为目标表加上访问排他锁来阻止对目标表的DML操作,由于交换数据的耗时为秒级,业务中断时间可以忽略不计,从而能够极大地改善用户使用体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是采用PostgreSQL原生的VACUUM FULL进行数据清理的方法流程图;
图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内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据清理方法。存储器204可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器204可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端200。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端200的通信供应商提供的无线网络。在一个实例中,传输装置206包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置206可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在上述运行环境下,本申请提供了如图3所示的数据清理方法。该方法可以应用于计算机终端中,也可以应用于智能终端设备中,由智能终端设备中的处理器执行,智能终端设备可以是智能手机、平板电脑等。智能终端设备中安装有至少一个应用程序,本发明实施例并不限定应用程序的种类,可以为系统类应用程序,也可以为软件类应用程序。
图3是根据本发明实施例的数据清理方法的流程图。如图3所示,该数据清理方法的一种可选的方案包括如下步骤:
步骤S301,确定目标表。
数据库中通过CREATE TABLE语句创建的表,在数据库中执行delete(删除)操作后,表中的记录只是被标示为删除状态,并没有释放空间,在以后的update(更新)或insert(插入)操作中该部分的空间是不能够被重用的;而数据库总是不断地在执行删除、更新等操作,会产生索引膨胀和垃圾数据,需要经过数据清理后,空间才能得到释放。本实施例中的目标表可以是数据库中由用户指定的表;也可以是满足数据清理条件的表,数据清理条件可以是表中数据大小超过设定的数据量阈值或者表在数据库中的运行时间超过设定的时间阈值,即,当数据库中的表运行时长超过时间阈值或者表中的数据大小超过数据量阈值时,可以将该表作为进行数据清理的目标表。本实施例所指的目标表可以是PostgreSQL中待进行数据清理的表。
步骤302,对目标表加共享更新排他锁,阻止系统对目标表的数据定义语言操作。
PostgreSQL中的数据清理手段分为VACUUM(扫除)和VACUUM FULL(全扫除)。VACUUM不会阻塞对表的DML操作,但会阻塞对表的DDL操作;VACUUM FULL会阻塞表的所有操作,包括DML和DDL,会引起所有后续操作的阻塞,导致长时间的业务中断。但是,VACUUM只是将deadtuple(死掉的数据)的行的空间转换为能够使用的状态,不会进行空间合并,VACUUMFULL除了可以将deadtuple的行的空间转换为能够使用的状态外,还会将这些空间碎片后面的数据上移,进行空间合并。
由于采用VACUUM FULL进行数据清理时,一开始就对表加了AccessExclusiveLock来阻止系统对这张表的修改,导致数据清理过程中所有针对目标表的操作包括DML都会被阻断,造成严重的业务中断,影响业务服务质量。鉴于上述原因,本实施例中,在对目标表进行数据清理时,先给目标表加共享更新排它锁(ShareUpdateExclusiveLock),仅阻止系统对目标表的DDL操作,此时DML操作仍可以正常进行。
步骤S303,建立临时表,所述临时表的表定义与所述目标表的表定义相同。
建立和目标表一样的临时表,完全复制目标表的表定义,包括约束、主键、外键等。
在数据清理过程中,为了快速的应用对目标表做的修改,需要快速找到目标表中的记录在临时表的对应位置,在数据量很大,比如数百GB的时候,就要求非常高的查询效率,需要一套高效的查询算法。因此,本实施例在根据目标表建立临时表之后,还建立了目标表中各数据与临时表中位置之间的映射关系。
具体地,可以使用数组来管理临时表到目标表的记录的位置映射关系,每个数组单元描述一个数据页中所有记录到临时表的数据映射,数组下标就是页号。数组单元CacheMapTuple的定义如下:
MapItem中oldItem存储目标表中记录的存储位置,newItem存储临时表记录的存储位置。每个CacheMapTuple对应一个数据页,items中的数组单元个数等于每个数据页中的记录条数。
通过上面的数据结构设计,可以用O(1)的时间复杂度找到任意一条记录的映射关系。
步骤S304,建立临时表的临时索引,所述临时索引的属性与目标表的索引的属性相同。
可以根据目标表的索引建立临时表的临时索引,临时索引继承目标表索引的所有属性,但不复制目标表索引的索引信息。在建立临时索引之后,设置临时索引的状态为不可用状态,该阶段内从目标表中copy(复制)数据到临时表的heap(表文件)中,不会在临时索引中生成索引信息。
PostgreSQL中默认的空间管理方法是使用空闲空间管理算法(Free Space Map,简称FSM),FSM使用基于树的管理算法寻找可用空间。由于步骤S302对目标表加ShareUpdateExclusiveLock,系统可以对目标表进行DML操作,如果仍然使用空闲空间管理算法,在将目标表中的数据copy到临时表的过程中可能会遗漏新增的数据。为了克服前述缺陷,本实施例针对表文件的空间管理方法,新加入一种数据写入方法:APPEND ONLY--追加模式,追加模式就是把数据写入到表的最后,而不考虑之前的位置是否有空闲。切换为追加模式后,目标表的末尾始终有一个空白数据块,用于写入新增的数据,数据块的容量是固定的,当数据块写满后,会自动追加一个新的空白数据块。
图6是根据本发明实施例1的切换数据写入模式的场景示意图。参见图6,在禁用临时索引之后,将目标表的数据写入模式由空闲空间管理模式切换为追加模式,追加模式下,数据被写入到位于目标表末尾的数据块中,从而可以对目标表的新增数据进行详细的跟踪。
步骤S305,将所述目标表的数据复制到所述临时表中,根据临时表中的数据在临时索引中生成索引信息。
图4是根据本发明实施例1的将目标表的数据复制到临时表中并根据临时表中的数据生成索引信息的方法的流程图;参见图4,该方法包括:
S401,统计目标表的数据块个数;
S402,将目标表中的数据复制到临时表中;
S403,确定数据复制过程中目标表中新增数据块的数量;
S404,判断所述新增数据块的数量是否小于预设阈值;
S405,若新增数据块的数量小于预设阈值,设置所述临时索引的状态为可用状态,并根据临时表中的数据在临时索引中生成索引信息;
若新增数据块的数量不小于预设阈值,返回执行步骤S401。
数据块是是一组或几组按顺序连续排列在一起的记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位。目标表中的数据块用于存储数据,每个数据块的大小是固定的。在将目标表中的数据复制到临时表之前,先统计目标表中当前的数据块总数,由于系统可以对目标表进行DML操作,因而在复制数据期间,目标表中数据块的数据可能增加,数据复制前后目标表中的数据块总数是变化的,若变化较大说明对目标表的DML操作较频繁,变化较小说明对目标表的DML操作较少,由于生成索引信息将耗费较长时间,本实施例提出在系统对目标表的DML操作较少的情况下生成索引信息。实施本方法时,预先设置一数据块增量阈值,通过对比数据复制过程前后目标表中数据块的变化可以确定复制过程中目标表中新增的数据块的数量,若新增数据块的数量小于预设的数据块增量阈值,说明系统对目标表的DML操作较少,可以启动生成索引信息的步骤,在生成索引信息之前需要先设置临时索引的状态为可用状态。
数据块阈值可以通过人为设置或计算机计算得到。可以根据对新增数据写入量的监控来确定,例如,划定一个时间段,监控该时间段内各单位时间(即设定的时段,例如:单位时间可以是1s)对应的新增数据块的数量,将最小的数据块数量作为阈值;还可以统计多个时间段内单位时间对应的新增数据块的数量,选出每个时间段内单位时间对应的最小数据块数量,然后求取平均值,将平均值作为阈值。数据块阈值的确定方法有多种,上述仅是示例性的,不应理解为对本发明方法的限制。
本实施例中,在临时索引中生成索引信息的过程可以包括如下步骤:
S4051,读取临时表中的数据;
S4052,对临时表中的数据进行计算,得到索引信息;
S4053,将所述索引信息写入临时索引上相应指针的位置;
S4054,设置临时索引中各索引信息的索引状态,所述索引状态用于标识索引信息是否可用。
由于生成索引信息过程中,系统可能对目标表执行DML操作,在目标表中产生新增数据,因而在生成索引信息之后,还需要处理在生成索引信息过程中所述目标表新增的数据。所述处理在生成索引信息过程中所述目标表新增的数据包括:
1)将生成索引信息过程中所述目标表的新增数据复制到临时表中;
2)读取复制到临时表的新增数据;
3)对复制到临时表的新增数据进行计算,得到新增数据的索引信息;
4)将所述新增数据的索引信息写入临时索引上相应指针的位置;
5)设置所述索引信息的索引状态。
步骤S402中,复制目标表的数据到临时表是以记录为单位逐条复制的,复制过程中剔除目标表中的无效记录,只复制有效的记录。所述将所述目标表的数据复制到所述临时表中可以包括:逐条判断目标表中的数据是否有效;若是,根据该数据的位置与临时表中位置的对应关系将该数据复制到临时表中,并执行判断下一条数据是否有效的步骤;若否,忽略该数据,执行判断下一条数据是否有效的步骤。
本实施例数据清理(VACUUM FULL CONCURRENTLY)的总体思路是在不影响业务请求的情况下,通过异步的方式把对目标表做的修改可靠的同步到新建的临时表中。本实施例设计了如图7的同步机制,即:在进行DML的Postgres进程和进行VACUUM FULLCONCURRENTLY的进程之间通过一个循环队列来传递对目标表所做的修改操作,Postgres进程向循环队列写入数据,VACUUM FULL CONCURRENTLY进程从循环队列读取数据,由此来传递数据;因为PostgreSQL特有的MVCC(Multi-Version Concurrency Control多版本并发控制)机制,在这个队列中只需要传递对数据进行的删除操作即可,传递的数据为:
ItemPointerData tid;删除记录的物理位置
TransactionId xmin;创建这条记录的事务
TransactionId xmax;删除这条记录的事务
通过如图7的数据同步机制,可以实现把对Heap的修改可靠的同步到进行VACUUMFULL CONCURRENTLY流程的进程中,队列的设置可以确保同步的顺序和操作的数序的一致性。
步骤S306,对所述目标表加访问排他锁,阻止系统对目标表的数据操作语言操作。
在处理完生成索引信息过程中目标表新增的数据之后,数据清理中的数据复制部分也就结束了,耗时比较多的操作到此都已完成,为了防止系统继续有新的数据产生,需要把加于目标表的锁升级到访问排他锁(AccessExclusiveLock),阻止系统的DML操作。
图5是PostgreSQL中的锁冲突表。参见图5,图中“X”表示冲突项,可见访问排他锁(AccessExclusiveLock)与共享更新排他锁(ShareUpdateExclusiveLock)冲突,尽管目标表加ShareUpdateExclusiveLock后仍能进行DML操作,但在对目标表加AccessExclusiveLock后,会阻塞表的所有操作,包括DML和DDL。
步骤S307,交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的索引信息。
交换目标表和临时表的表数据和对应的索引信息,交换完成后临时表的表数据被写到了目标表中,临时索引的索引信息被写到了目标表的索引中,目标表的表数据被写入到了临时表中,目标表的索引信息被写到了临时索引中。
之后可以删除所述临时表和临时索引。由于临时表和目标表的表数据和索引信息都已经交换,删除创建的临时表和对应的临时索引时,真正删除的物理文件是原始的表数据和索引信息。
步骤S308,解除所述目标表上的共享更新排他锁和访问排他锁。
将加于目标表上的共享更新排他锁和访问排他锁解除,恢复系统对目标表的操作权限。
根据本实施例的一种PostgreSQL的数据清理方法,通过对目标表加ShareUpdateExclusiveLock,阻止系统对目标表的DDL操作,然后建立临时表和临时索引,将目标表中的数据复制到临时表中,并根据临时表中的数据生成索引信息,之后对目标表加AccessExclusiveLock来阻止系统对目标表的DML操作,再交换目标表和临时表中的数据以及对应的索引信息,从而完成磁盘空间的清理和回收。由于数据清理过程中绝大部分时间都采用共享更新排他锁,不影响系统对目标表的DML操作,因此在进行数据清理的绝大部分时间中数据库的DML操作都可以正常运行,确保系统较高的可用率;本方案仅在交换目标表和临时表中的数据和对应的索引信息期间,为目标表加上访问排他锁来阻止对目标表的DML操作,由于交换数据的耗时为秒级,业务中断时间可以忽略不计,从而能够极大地改善用户使用体验。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述数据清理方法的装置。图8是根据本发明实施例2的数据清理装置的结构框图,如图8所示,该数据清理装置800包括确定单元801、第一加锁单元802、临时表建立单元803、临时索引建立单元805、数据处理单元808、第二加锁单元809、数据交换单元810、删除单元811和解锁单元812。
确定单元801,用于确定目标表;
第一加锁单元802,用于用于对目标表加共享更新排他锁,阻止系统对目标表的数据定义语言操作;
临时表建立单元803,用于建立临时表,所述临时表的表定义与所述目标表的表定义相同;
临时索引建立单元805,用于建立临时表的临时索引,所述临时索引的属性与目标表的索引的属性相同;
数据处理单元808,用于将所述目标表的数据复制到所述临时表中,根据临时表中的数据在临时索引中生成索引信息;
第二加锁单元809,用于对所述目标表加访问排他锁,阻止系统对目标表的数据操作语言操作;
数据交换单元810,用于交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的索引信息;
删除单元811,用于删除所述临时表和临时索引;
解锁单元812,用于解除所述目标表上的共享更新排他锁和访问排他锁。
作为一种可选的实施例,该数据清理装置800还包括:临时索引管理单元806和模式切换单元807。
临时索引管理单元806,用于设置临时索引的状态,所述临时索引的状态包括不可用状态和可用状态;
模式切换单元807,用于将所述目标表的数据写入模式切换为追加模式,所述追加模式用于当目标表末尾的数据块写满后在目标表末尾增加一个数据块,并将新增数据写入到位于目标表末尾的数据块中。
作为一种可选的实施例,所述数据处理单元包括数据复制子单元8081、统计子单元8082、判断子单元8083、生成子单元8084和数据生成子单元8085。
数据复制子单元8081,用于将目标表中的数据复制到临时表中;
统计子单元8082,用于统计数据复制过程中目标表中新增数据块的数量;
判断子单元8083,用于判断所述新增数据块的数量是否小于预设阈值;
生成子单元8084,用于在判断模块判断出所述新增数据块的数量小于预设阈值时,根据临时表中的数据在临时索引中生成索引信息。
数据处理子单元8085,用于处理在生成索引信息过程中所述目标表的新增数据。
作为一种可选的实施例,所述生成子单元8084包括:
第一读取模块,用于读取临时表中的数据;
第一计算模块,用于对临时表中的数据进行计算,得到索引信息;
第一写入模块,用于将所述索引信息写入临时索引上相应指针的位置;
第一状态设置模块,用于设置临时索引中各索引信息的索引状态,所述索引状态用于标识索引信息是否可用。
作为一种可选的实施例,所述数据处理子单元8085包括:
表数据复制模块,用于将生成索引信息过程中所述目标表的新增数据复制到临时表中;
第二读取模块,用于读取复制到临时表的新增数据;
第二计算模块,用于对所述新增数据进行计算,得到新增数据的索引信息;
第二写入模块,用于将所述新增数据的索引信息写入临时索引上相应指针的位置;
第二状态设置模块,用于设置所述索引信息的索引状态。
作为一种可选的实施例,该数据清理装置800还包括:
映射关系建立单元804,用于建立目标表中各数据与临时表中位置之间的映射关系;
所述数据复制子单元8081包括:
判断模块,用于逐条判断目标表中的数据是否有效;
复制模块,用于在判断模块判断出所述数据有效时,根据该数据与临时表中位置的对应关系将该数据复制到临时表中对应的位置。
根据本实施例的一种数据清理装置,通过对目标表加共享更新排他锁,阻止系统对目标表的DDL操作,然后建立临时表和临时索引,将目标表中的数据复制到临时表中,并根据临时表中的数据生成索引信息,之后对目标表加访问排他锁来阻止系统对目标表的DML操作,再交换目标表和临时表中的数据以及对应的索引信息,从而完成磁盘空间的清理和回收。由于数据清理过程中绝大部分时间都采用共享更新排他锁,可以在对DML完全没有影响的情况下完成数据库中垃圾数据的清理从而释放表占用的磁盘空间,确保系统较高的可用率,改善用户体验。
实施例3
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一种数据清理方法所执行的程序代码。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
第一步,确定目标表;
第二步,对所述目标表加共享更新排他锁,阻止系统对所述目标表的DDL操作;
第三步,建立临时表,所述临时表的表定义与所述目标表相同;
第四步,建立临时表的临时索引,所述临时索引根据目标表的索引建立;
第五步,将所述目标表的数据复制到所述临时表中,根据临时表中的数据生成索引信息;
第六步,对所述目标表加访问排他锁,阻止系统对目标表的DML操作;
第七步,交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的索引信息;
第八步,删除所述临时表和临时索引;
第九步,解除所述目标表上的共享更新排他锁和访问排他锁。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (16)
1.一种数据清理方法,其特征在于,包括:
对目标表加共享更新排他锁,阻止系统对所述目标表的数据定义语言操作,允许所述系统对所述目标表的数据操作语言操作;所述数据操作语言操作中的Postgres 进程和VACUUM FULL CONCURRENTLY进程之间通过循环队列来传递对所述目标表所做的删除操作,所述Postgres 进程向所述循环队列写入数据,所述VACUUM FULL CONCURRENTLY进程从所述循环列队读取数据,所述循环列队传递对数据进行的删除操作;
建立临时表,所述临时表的表定义与所述目标表的表定义相同;
建立所述临时表的临时索引,所述临时索引的属性与所述目标表的索引的属性相同;
将所述目标表的数据复制到所述临时表中,根据所述临时表中的数据在所述临时索引中生成索引信息;
对所述目标表加访问排他锁,阻止所述系统对所述目标表的所述数据操作语言操作;
交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的所述索引信息;
解除所述目标表上的所述共享更新排他锁和所述访问排他锁。
2.根据权利要求1所述的方法,其特征在于,所述建立所述临时表的临时索引之后还包括:
设置所述临时索引的状态为不可用;
将所述目标表的数据写入模式切换为追加模式,所述追加模式用于当所述目标表末尾的数据块写满后在所述目标表末尾增加一个数据块,并将新增数据写入到位于所述目标表末尾的数据块中。
3.根据权利要求2所述的方法,其特征在于,所述将所述目标表的数据复制到所述临时表中,根据所述临时表中的数据在所述临时索引中生成索引信息,包括:
将所述目标表中的数据复制到所述临时表中;
统计数据复制过程中所述目标表中新增数据块的数量;
判断所述新增数据块的数量是否小于预设阈值;
若是,设置所述临时索引的状态为可用,并根据所述临时表中的数据在所述临时索引中生成所述索引信息;
若否,将所述新增数据块中的数据复制到所述临时表中,并执行统计数据复制过程中所述目标表中所述新增数据块的数量的步骤。
4.根据权利要求1所述的方法,其特征在于,所述根据所述临时表中的数据在所述临时索引中生成索引信息包括:
读取所述临时表中的数据;
对所述临时表中的数据进行计算,得到所述索引信息;
将所述索引信息写入所述临时索引上相应指针的位置;
设置所述临时索引中各所述索引信息的索引状态,所述索引状态用于标识所述索引信息是否可用。
5.根据权利要求4所述的方法,其特征在于,所述根据所述临时表中的数据在所述临时索引中生成索引信息之后,还包括:
处理在生成索引信息过程中所述目标表的新增数据。
6.根据权利要求5所述的方法,其特征在于,所述处理在生成索引信息过程中所述目标表的新增数据包括:
将生成索引信息过程中所述目标表的新增数据复制到临时表中;
读取复制到所述临时表的新增数据;
对复制到所述临时表的新增数据进行计算,得到所述新增数据的索引信息;
将所述新增数据的索引信息写入所述临时索引上相应指针的位置;
设置所述索引信息的索引状态。
7.根据权利要求1所述的方法,其特征在于,所述建立临时表之后还包括:
建立所述目标表中各数据与所述临时表中位置之间的对应关系;
所述将所述目标表的数据复制到所述临时表中包括:
逐条判断所述目标表中的数据是否有效;
若是,根据该数据与所述临时表中位置的对应关系将该数据复制到所述临时表中对应的位置,并执行判断下一条数据是否有效的步骤;
若否,忽略该数据,执行判断下一条数据是否有效的步骤。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
删除所述临时表和临时索引。
9.一种数据清理装置,其特征在于,包括:
第一加锁单元,用于对目标表加共享更新排他锁,阻止系统对目标表的数据定义语言操作,允许所述系统对所述目标表的数据操作语言操作;所述数据操作语言操作中的Postgres 进程和VACUUM FULL CONCURRENTLY进程之间通过循环队列来传递对所述目标表所做的删除操作,所述Postgres 进程向所述循环队列写入数据,所述VACUUM FULLCONCURRENTLY进程从所述循环列队读取数据,所述循环列队传递对数据进行的删除操作;
临时表建立单元,用于建立临时表,所述临时表的表定义与所述目标表的表定义相同;
临时索引建立单元,用于所述建立临时表的临时索引,所述临时索引的属性与所述目标表的索引的属性相同;
数据处理单元,用于将所述目标表的数据复制到所述临时表中,根据所述临时表中的数据在所述临时索引中生成索引信息;
第二加锁单元,用于对所述目标表加访问排他锁,阻止所述系统对所述目标表的所述数据操作语言操作;
数据交换单元,用于交换所述临时表和所述目标表中的数据以及所述临时索引和所述目标索引中的所述索引信息;
解锁单元,用于解除所述目标表上的所述共享更新排他锁和所述访问排他锁。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
临时索引管理单元,用于设置所述临时索引的状态,所述临时索引的状态包括不可用状态和可用状态;
模式切换单元,用于将所述目标表的数据写入模式切换为追加模式,所述追加模式用于当所述目标表末尾的数据块写满后在所述目标表末尾增加一个数据块,并将新增数据写入到位于所述目标表末尾的数据块中。
11.根据权利要求9所述的装置,其特征在于,所述数据处理单元包括:
数据复制子单元,用于将所述目标表中的数据复制到所述临时表中;
统计子单元,用于统计数据复制过程中所述目标表中新增数据块的数量;
判断子单元,用于判断所述新增数据块的数量是否小于预设阈值;
生成子单元,用于在判断模块判断出所述新增数据块的数量小于预设阈值时,根据所述临时表中的数据在所述临时索引中生成所述索引信息。
12.根据权利要求11所述的装置,其特征在于,所述生成子单元包括:
第一读取模块,用于读取所述临时表中的数据;
第一计算模块,用于对所述临时表中的数据进行计算,得到所述索引信息;
第一写入模块,用于将所述索引信息写入所述临时索引上相应指针的位置;
第一状态设置模块,用于设置所述临时索引中各所述索引信息的索引状态,所述索引状态用于标识所述索引信息是否可用。
13.根据权利要求9所述的装置,其特征在于,所述数据处理单元还包括:
数据处理子单元,用于处理在生成索引信息过程中所述目标表的新增数据。
14.根据权利要求9所述的装置,其特征在于,所述数据处理子单元包括:
表数据复制模块,用于将生成索引信息过程中所述目标表的新增数据复制到临时表中;
第二读取模块,用于读取复制到所述临时表的新增数据;
第二计算模块,用于对所述新增数据进行计算,得到所述新增数据的索引信息;
第二写入模块,用于将所述新增数据的索引信息写入所述临时索引上相应指针的位置;
第二状态设置模块,用于设置所述索引信息的索引状态。
15.根据权利要求9所述的装置,其特征在于,所述装置还包括:
映射关系建立单元,用于建立目标表中各数据与临时表中位置之间的对应关系;
所述数据复制子单元包括:
判断模块,用于逐条判断所述目标表中的数据是否有效;
复制模块,用于在判断模块判断出所述数据有效时,根据该数据与所述临时表中位置的对应关系将该数据复制到所述临时表中对应的位置。
16.根据权利要求9所述的装置,其特征在于,所述装置还包括:
删除单元,用于删除所述临时表和临时索引。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710013109.2A CN108287835B (zh) | 2017-01-09 | 2017-01-09 | 一种数据清理方法及装置 |
PCT/CN2018/071506 WO2018127116A1 (zh) | 2017-01-09 | 2018-01-05 | 一种数据清理方法、装置及计算机可读存储介质 |
US16/435,001 US11023448B2 (en) | 2017-01-09 | 2019-06-07 | Data scrubbing method and apparatus, and computer readable storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710013109.2A CN108287835B (zh) | 2017-01-09 | 2017-01-09 | 一种数据清理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108287835A CN108287835A (zh) | 2018-07-17 |
CN108287835B true CN108287835B (zh) | 2022-06-21 |
Family
ID=62790976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710013109.2A Active CN108287835B (zh) | 2017-01-09 | 2017-01-09 | 一种数据清理方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11023448B2 (zh) |
CN (1) | CN108287835B (zh) |
WO (1) | WO2018127116A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117316A (zh) * | 2018-09-25 | 2019-01-01 | Oppo广东移动通信有限公司 | 一种数据管理方法、数据管理装置及移动终端 |
CN110222039B (zh) * | 2019-05-07 | 2023-09-29 | 平安科技(深圳)有限公司 | 数据存储及垃圾数据清理方法、装置、设备及存储介质 |
CN112181938B (zh) * | 2019-07-05 | 2024-06-14 | 杭州海康威视数字技术股份有限公司 | 数据库清理方法、装置和计算机可读存储介质 |
CN110442558B (zh) * | 2019-07-30 | 2023-12-29 | 深信服科技股份有限公司 | 数据处理方法、分片服务器、存储介质及装置 |
CN110765143B (zh) * | 2019-10-10 | 2022-08-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、服务器和存储介质 |
CN111008192B (zh) * | 2019-11-14 | 2023-06-02 | 泰康保险集团股份有限公司 | 一种数据管理方法、装置、设备及介质 |
CN111291228A (zh) * | 2019-12-04 | 2020-06-16 | 深圳市智微智能软件开发有限公司 | 钢网清洗数据库的建立方法及系统 |
CN111414362B (zh) * | 2020-02-28 | 2023-11-10 | 平安科技(深圳)有限公司 | 数据读取方法、装置、设备及存储介质 |
CN112148714B (zh) * | 2020-09-30 | 2023-12-05 | 珠海格力电器股份有限公司 | 数据监控方法、系统、存储介质及电子设备 |
CN112307007B (zh) * | 2020-12-02 | 2023-10-31 | 中国联合网络通信集团有限公司 | 数据库清理方法及装置 |
CN112597126B (zh) * | 2020-12-14 | 2024-09-24 | 中国建设银行股份有限公司 | 一种数据迁移方法和装置 |
CN112883036B (zh) * | 2021-03-05 | 2024-05-28 | 鹏城实验室 | 索引创建方法、装置、存储服务器以及存储介质 |
WO2022266889A1 (en) * | 2021-06-23 | 2022-12-29 | Huawei Technologies Co.,Ltd. | Methods for the self-sufficient maintenance of database object storage |
CN113468155B (zh) * | 2021-07-05 | 2024-03-29 | 杭州数梦工场科技有限公司 | 问题数据处理方法和装置 |
CN113515537B (zh) * | 2021-09-13 | 2021-12-31 | 天津南大通用数据技术股份有限公司 | 一种实现生命周期表垃圾数据免维护的方法 |
CN114661719B (zh) * | 2022-03-28 | 2023-04-28 | 北京海量数据技术股份有限公司 | 一种在OpenGauss数据库分区表上在线创建全局索引的方法 |
CN114706797B (zh) * | 2022-06-08 | 2022-09-16 | 天津南大通用数据技术股份有限公司 | 一种回收存储空间的方法 |
CN115129513B (zh) * | 2022-06-29 | 2024-10-22 | 苏州浪潮智能科技有限公司 | 临时表数据的备份方法、系统、终端及存储介质 |
GB2629587A (en) * | 2023-05-03 | 2024-11-06 | Ibm | Query execution in a data analysis system |
CN116257531B (zh) * | 2023-05-16 | 2023-08-04 | 广州图灵科技有限公司 | 一种数据库空间回收方法 |
CN117056359B (zh) * | 2023-10-09 | 2024-01-09 | 宁波银行股份有限公司 | 一种表格重建方法、装置、电子设备及存储介质 |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819251A (en) * | 1996-02-06 | 1998-10-06 | Oracle Corporation | System and apparatus for storage retrieval and analysis of relational and non-relational data |
CN1588359A (zh) * | 2004-10-09 | 2005-03-02 | 武汉大学 | 数据库中对象标识符回收再利用的方法 |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
US20060080345A1 (en) * | 2004-07-02 | 2006-04-13 | Ravi Murthy | Mechanism for efficient maintenance of XML index structures in a database system |
CN1864137A (zh) * | 2003-08-06 | 2006-11-15 | 甲骨文国际公司 | 具有高效版本控制的数据库管理系统 |
US20080120304A1 (en) * | 2006-11-21 | 2008-05-22 | Calio Robert J | Method and system for providing high performance data modification of relational database tables |
US20080222209A1 (en) * | 2007-03-09 | 2008-09-11 | Fujitsu Limited | Database management method and database management apparatus |
CN101493842A (zh) * | 2009-02-20 | 2009-07-29 | 中兴通讯股份有限公司 | Oracle数据库中大批量删除数据的方法 |
US7734604B1 (en) * | 2000-11-16 | 2010-06-08 | Teradata Us, Inc. | Locking data in a database after an operation has begun |
US20110282839A1 (en) * | 2010-05-14 | 2011-11-17 | Mustafa Paksoy | Methods and systems for backing up a search index in a multi-tenant database environment |
CN102411569A (zh) * | 2010-09-20 | 2012-04-11 | 上海众融信息技术有限公司 | 一种数据库转换与清洗信息处理方法 |
CN102567323A (zh) * | 2010-12-14 | 2012-07-11 | 腾讯科技(深圳)有限公司 | 一种应用程序文件搬移方法及系统 |
CN103593449A (zh) * | 2013-11-19 | 2014-02-19 | 华为技术有限公司 | 一种数据库资源回收方法及系统 |
CN103778064A (zh) * | 2012-10-23 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种数据管理方法及装置 |
US20140222872A1 (en) * | 2013-02-04 | 2014-08-07 | Bank Of America Corporation | Multi-row database updating for enterprise workflow application |
CN104317951A (zh) * | 2014-11-13 | 2015-01-28 | 北京奇虎科技有限公司 | 基于前缀型数据库的存储空间清理方法和装置 |
US20150106542A1 (en) * | 2012-05-23 | 2015-04-16 | Nec Corporation | Lock management system, lock management method and lock management program |
US20150278275A1 (en) * | 2014-03-31 | 2015-10-01 | Oracle International Corporation | Dropping an index without blocking locks |
CN104965879A (zh) * | 2015-06-12 | 2015-10-07 | 小米科技有限责任公司 | 修改数据表的表结构的方法及装置 |
US20150347401A1 (en) * | 2014-05-29 | 2015-12-03 | Oracle International Corporation | Moving data between partitions |
CN106294512A (zh) * | 2015-06-11 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种处理关系型数据库中ddl语句的方法与设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6917931B2 (en) * | 2001-06-29 | 2005-07-12 | International Business Machines Corporation | Software and method for performing database operations |
JP2010015344A (ja) * | 2008-07-03 | 2010-01-21 | Murata Mach Ltd | データベースシステム |
CN110287183B (zh) * | 2019-05-23 | 2024-02-02 | 中国平安人寿保险股份有限公司 | 数据库表水位的处理方法、装置、计算机设备及存储介质 |
-
2017
- 2017-01-09 CN CN201710013109.2A patent/CN108287835B/zh active Active
-
2018
- 2018-01-05 WO PCT/CN2018/071506 patent/WO2018127116A1/zh active Application Filing
-
2019
- 2019-06-07 US US16/435,001 patent/US11023448B2/en active Active
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819251A (en) * | 1996-02-06 | 1998-10-06 | Oracle Corporation | System and apparatus for storage retrieval and analysis of relational and non-relational data |
US7734604B1 (en) * | 2000-11-16 | 2010-06-08 | Teradata Us, Inc. | Locking data in a database after an operation has begun |
CN1864137A (zh) * | 2003-08-06 | 2006-11-15 | 甲骨文国际公司 | 具有高效版本控制的数据库管理系统 |
US20060080345A1 (en) * | 2004-07-02 | 2006-04-13 | Ravi Murthy | Mechanism for efficient maintenance of XML index structures in a database system |
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
CN1588359A (zh) * | 2004-10-09 | 2005-03-02 | 武汉大学 | 数据库中对象标识符回收再利用的方法 |
US20080120304A1 (en) * | 2006-11-21 | 2008-05-22 | Calio Robert J | Method and system for providing high performance data modification of relational database tables |
US20080222209A1 (en) * | 2007-03-09 | 2008-09-11 | Fujitsu Limited | Database management method and database management apparatus |
CN101493842A (zh) * | 2009-02-20 | 2009-07-29 | 中兴通讯股份有限公司 | Oracle数据库中大批量删除数据的方法 |
US20110282839A1 (en) * | 2010-05-14 | 2011-11-17 | Mustafa Paksoy | Methods and systems for backing up a search index in a multi-tenant database environment |
CN102411569A (zh) * | 2010-09-20 | 2012-04-11 | 上海众融信息技术有限公司 | 一种数据库转换与清洗信息处理方法 |
CN102567323A (zh) * | 2010-12-14 | 2012-07-11 | 腾讯科技(深圳)有限公司 | 一种应用程序文件搬移方法及系统 |
US20150106542A1 (en) * | 2012-05-23 | 2015-04-16 | Nec Corporation | Lock management system, lock management method and lock management program |
CN103778064A (zh) * | 2012-10-23 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种数据管理方法及装置 |
US20140222872A1 (en) * | 2013-02-04 | 2014-08-07 | Bank Of America Corporation | Multi-row database updating for enterprise workflow application |
CN103593449A (zh) * | 2013-11-19 | 2014-02-19 | 华为技术有限公司 | 一种数据库资源回收方法及系统 |
US20150278275A1 (en) * | 2014-03-31 | 2015-10-01 | Oracle International Corporation | Dropping an index without blocking locks |
US20150347401A1 (en) * | 2014-05-29 | 2015-12-03 | Oracle International Corporation | Moving data between partitions |
CN104317951A (zh) * | 2014-11-13 | 2015-01-28 | 北京奇虎科技有限公司 | 基于前缀型数据库的存储空间清理方法和装置 |
CN106294512A (zh) * | 2015-06-11 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种处理关系型数据库中ddl语句的方法与设备 |
CN104965879A (zh) * | 2015-06-12 | 2015-10-07 | 小米科技有限责任公司 | 修改数据表的表结构的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11023448B2 (en) | 2021-06-01 |
CN108287835A (zh) | 2018-07-17 |
WO2018127116A1 (zh) | 2018-07-12 |
US20190294602A1 (en) | 2019-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108287835B (zh) | 一种数据清理方法及装置 | |
US11442961B2 (en) | Active transaction list synchronization method and apparatus | |
CN107220142B (zh) | 执行数据恢复操作的方法及装置 | |
KR101231563B1 (ko) | 실시간 데이터 복제 | |
CN103116661B (zh) | 一种数据库的数据处理方法 | |
US9515878B2 (en) | Method, medium, and system for configuring a new node in a distributed memory network | |
CN108255909B (zh) | 基于Oracle数据库的数据表备份方法及服务器 | |
US9020916B2 (en) | Database server apparatus, method for updating database, and recording medium for database update program | |
CN109739935A (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
EP2380090B1 (en) | Data integrity in a database environment through background synchronization | |
EP3200096A1 (en) | Remote replication method and apparatus based on duplicated data deletion | |
CN109710388A (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US11132376B2 (en) | System and method for management of a database system | |
CN114328018B (zh) | 快照的创建方法、计算设备及存储介质 | |
CN113297201B (zh) | 索引数据同步方法、系统及装置 | |
US11113311B2 (en) | Technology agnostic system and method for achieving eventually-consistent data replication | |
CN110121712B (zh) | 一种日志管理方法、服务器和数据库系统 | |
CN109960602A (zh) | 信息管理方法、装置、设备及介质 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
EP4213034A1 (en) | Data processing system, data processing method based on blockchain, and device | |
CN111198782A (zh) | 数据重分布方法、装置、设备及存储介质 | |
CN109964217A (zh) | 去重数据装置和方法 | |
CN116821232A (zh) | 一种数据同步方法及相关装置 | |
CN113468190B (zh) | 一种对MongoDB数据库实例的配置更新方法及装置 | |
CN116010430B (zh) | 数据恢复方法、数据库系统、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |