CN107436898B - 定期清除数据库数据的方法和系统和计算机可读存储介质 - Google Patents
定期清除数据库数据的方法和系统和计算机可读存储介质 Download PDFInfo
- Publication number
- CN107436898B CN107436898B CN201610363451.0A CN201610363451A CN107436898B CN 107436898 B CN107436898 B CN 107436898B CN 201610363451 A CN201610363451 A CN 201610363451A CN 107436898 B CN107436898 B CN 107436898B
- Authority
- CN
- China
- Prior art keywords
- data
- data source
- management module
- source
- sources
- 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
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种定期清除数据库数据的系统,所述系统包括:双写管理模块,配置为将数据写入第一和第二数据源;数据源管理模块,配置针对数据读取操作分配第一和第二数据源之一,并在第一和第二数据源之间进行切换;定期切换模块,配置为根据设定周期来请求数据源管理模块在第一和第二数据源之间进行切换;以及数据清理模块,配置为响应于数据源管理模块将第一数据源切换到第二数据源,清空所述第一数据源中的数据。
Description
技术领域
本发明涉及计算机领域,具体地,涉及一种定期清除数据库数据的方法和系统。
背景技术
随着互联网技术的发展,很多行业都已经进入了海量数据时代。在互联网应用中,业务数据的量级通常达到千万级、甚至亿级数据量。然而,互联网应用的特点是往往不需要访问过期的数据,比如,一年前的数据,几个月前的数据,甚至是无需访问几个星期前的数据。互联网应用所记录的数据量往往很大,即使分表之后,也需要将历史数据归档后删除掉。
现在通常通过不断删除历史数据的方法来清除数据库。然而,采用delete来删除历史数据的方法往往效率低下,且不会释放空间,还会导致磁盘碎片。这种使用delete来删除数据的方法效率极低,且容易导致数据库负载上升,影响正常读写操作。此外,在不断delete的操作中,如果自增主键,则主键持续递增,长期很容易越界,且在删除数据之后不释放空间。
鉴于此,本申请提供了一种定期清除数据库数据的方法和系统,可以大大提高删除效率,既能在删除后释放空间,又能避免频繁delete导致的磁盘碎片问题,并且不会影响应用的正常读写。
发明内容
为了至少解决上述问题,本发明提供了一种定期清除数据库数据的方法和系统。
根据本发明的第一方面,提供了一种定期清除数据库数据的系统,可以包括:双写管理模块,配置为将数据写入第一和第二数据源;数据源管理模块,配置针对数据读取操作分配第一和第二数据源之一,并在第一和第二数据源之间进行切换;定期切换模块,配置为根据设定周期来请求数据源管理模块在第一和第二数据源之间进行切换;数据清理模块,配置为响应于数据源管理模块将第一数据源切换到第二数据源,清空所述第一数据源中的数据。
优选地,所述系统还可以包括:数据归档模块,配置为对数据进行归档。
优选地,所述系统还可以包括:索引管理模块,配置为管理针对第一和第二数据源的索引。
优选地,所述数据清理模块可以配置为响应于数据源管理模块将第一数据源切换到第二数据源,对所述第一数据源执行truncate清空。
优选地,所述索引管理模块可以配置为在清空所述第一数据源中的数据之后,重建所述第一数据源的索引。
优选地,所述双写管理模块可以配置为同步地或异步地将数据写入第一和第二数据源。
优选地,所述双写管理模块可以配置为如果将数据写入第一和第二数据源失败,则分别将写入失败的数据存放至对应缓存队列;以及通过独立的入库线程来将所述写入失败的数据再次写入相应数据源,直到将所述写入失败的数据写入所述第一和第二数据源为止。
优选地,所述双写管理模块还可以配置为响应于写入失败的次数超过预定次数,则进行报警以便确保将所有数据写入第一和第二数据源。
根据本发明的第二方面,还提供了一种定期清除数据库数据的方法,可以包括:将数据写入第一和第二数据源;针对数据读取操作分配第一和第二数据源之一;以及在第一和第二数据源之间进行切换,其中所述切换包括:根据设定周期,在第一和第二数据源之间进行切换;以及响应于将第一数据源切换至第二数据源,清空所述第一数据源中的数据。
优选地,所述方法可以包括:响应于将第一数据源切换到第二数据源,对所述第一数据源执行truncate清空。
根据本发明的第三方面,还提供了一种定期清除数据库数据的系统,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如本发明第二方面所述的在定期清除数据库数据的方法。
根据本发明的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如本发明第二方面所述的定期清除数据库数据的方法。
根据本发明实施例的定期清除数据库数据的方法和系统可以大大提高删除效率,既能在删除后释放空间,又能避免频繁delete导致的磁盘碎片问题,并且不会影响应用的正常读写。
附图说明
以下结合附图,将更清楚本公开的示例实施例的上述和其它方面、特征以及优点,附图中:
图1示出了根据本公开实施例的定期清除数据库数据的系统的框图;
图2示出了根据本公开实施例的数据写入结构图;
图3示出了根据本公开实施例的数据读取结构图;以及
图4示出了根据本公开实施例的定期清除数据库数据的方法的流程图。
具体实施方式
以下参考附图描述了本公开的示例实施。本公开提供了一种定期清除数据库数据的方法和系统,所述定期清除数据库数据的方法和系统可以大大提高删除效率,既能在删除后释放空间,又能避免频繁delete导致的磁盘碎片问题,并且不会影响应用的正常读写。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。此外,本文所用的术语“第一”和“第二”等仅用于区分一个元素与另一元素,而并非用于限定元素的顺序和/或重要性。第一元素可以是第二元素,第二元素也可以是第一元素。
图1示出了根据本公开实施例的定期清除数据库数据的系统100的框图。具体地,根据本公开实施例的定期清除数据库数据的系统100可以包括:双写管理模块110,配置为将数据写入第一和第二数据源;数据源管理模块120,配置针对数据读取操作分配第一和第二数据源之一,并在第一和第二数据源之间进行切换;定期切换模块130,配置为根据设定周期来请求数据源管理模块在第一和第二数据源之间进行切换;数据清理模块140,配置为响应于数据源管理模块120将第一数据源切换到第二数据源,清空所述第一数据源中的数据。备选地,所述系统100还可以包括:数据归档模块150,配置为对数据进行归档;以及索引管理模块160,配置为管理针对第一和第二数据源的索引。
具体地,根据本公开实施例的定期清除数据库数据系统100可以具有两个数据源,即,第一和第二数据源。在这种情况下,双写管理模块110配置为负责对写入数据进行双写,并保证双写的数据都能正确入库。应注意,本文所述的双写并不强调双写数据的强一致,只保证在尽快的一段时间内最终一致。因此,可以同步地或异步地将数据写入第一和第二数据源。数据源管理模块120可以配置为负责管理读数据源,并为每次数据读取操作分配数据源,例如,分配第一和第二数据源之一。定期切换模块130负责根据设定的切换周期,在定时器期满后向数据源管理模块120请求切换针对读取操作分配的数据源。在切换后,数据源管理模块120不再向之前的数据源分配读取请求。数据清理模块140配置为在数据源切换后,对没有读取请求的数据源进行清理。例如,由于在该数据源上没有读取请求,则可以直接进行truncate清空。备选地,所述定期清除数据库数据系统100还可以包括数据归档模块150,配置为对数据进行归档。附加地,索引管理模块160配置为负责管理数据源的索引,并在数据清空后重建索引。
以下分别结合图2和图3来描述定期清除数据库数据的方法。具体地,图2示出了根据本公开实施例的向数据库写入数据的过程。
具体地,如图2所示,系统包括两个数据源,即,表1和表2。所述两个数据源分别具有相应的缓存队列,即,缓存队列1和缓存队列2。当将数据直接双份写入到数据库时,写入失败的数据被分别放到对应的缓存队列。由独立的入库线程保证这些没有入库的数据最终都完全入库,独立入库线程一般会在再次入库失败后放回队列,反复尝试直到入库为止。此外,如果多次未入库,则可以进行报警以便人为处理,从而保证所有数据入库,实现最终一致。也就是说,如果将数据写入第一和第二数据源失败,则分别将写入失败的数据存放至对应缓存队列;并通过独立的入库线程来将所述写入失败的数据再次写入相应数据源,直到将所述写入失败的数据写入所述第一和第二数据源为止。
图3示出了根据本公开实施例的读取并清除数据库数据的过程。
如图3所示,在读取数据的过程中,始终保持从单个数据源读取数据。在设定周期期满后,定期切换模块130就会请求数据源管理模块120切换读的数据源,例如,从第一数据源(如表1)切换到第二数据源(如表2)。因此,数据源管理模块120针对此后的读取操作分配表2,以便从表2读取数据。此外,当从表1切换到表2时,数据清理模块140对表1执行清空处理,例如truncate清空,且索引管理模块160附加地响应于清空了表1中的数据,恢复针对表1的所有索引,以便当下次切换周期到来时,再次执行切换,例如,从表2切换到表1。
因此,本公开使得海量数据在删除上的效率大大提升,且能快速释放磁盘空间,大大减少磁盘碎片。由于本公开的技术方案只切换读取操作的数据源而不切换写入操作的数据源,因此本公开的技术方案对应用系统数据的读写没有影响,从而使得大量数据的快速高效删除成为可能,保护了数据库服务器资源。
图4示出了根据本公开示例实施例的定期清除数据库数据的方法的流程图。所述方法可以包括:在步骤401,将数据写入第一和第二数据源;在步骤402,针对数据读取操作分配第一和第二数据源之一;以及在步骤401,在第一和第二数据源之间进行切换。所述切换可以附加地包括:在步骤403,判断设定周期是否期满。如果设定周期期满,则在步骤404,在第一和第二数据源之间进行切换,并且在步骤405响应于在第一数据源和第二数据源之间执行切换,例如,从第一数据源切换至第二数据源,清空所述第一数据源中的数据。另一方面,如果设定周期并未期满,则在步骤406,继续从所分配的数据源(例如,第一数据源)读取数据,直到设定周期期满。
因此,通过使用根据本发明实施例的定期清除数据库数据的方法,可以使大量数据的定期删除变得简单,且删除效率高,完全释放空间,减少磁盘碎片产生,且不会影响到业务读写。
以上方案仅是示出本发明构思的一个具体实现方案,本发明不限于上述实现方案。可以省略或跳过上述实现方案中的一部分处理,而不脱离本发明的精神和范围。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、只读光盘、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种定期清除数据库数据的系统,包括:
双写管理模块,配置为将数据写入第一和第二数据源;
数据源管理模块,配置针对数据读取操作分配第一和第二数据源之一,并在第一和第二数据源之间进行切换;
定期切换模块,配置为根据设定周期来请求数据源管理模块在第一和第二数据源之间进行切换;以及
数据清理模块,配置为响应于数据源管理模块执行数据源切换,清空没有读取请求的数据源的数据。
2.根据权利要求1所述的系统,其中所述系统还包括:
数据归档模块,配置为对数据进行归档。
3.根据权利要求1所述的系统,其中所述系统还包括:
索引管理模块,配置为管理针对第一和第二数据源的索引。
4.根据权利要求1所述的系统,其中所述数据清理模块配置为响应于数据源管理模块执行数据源切换,对所述没有读取请求的数据源执行truncate清空。
5.根据权利要求3所述的系统,其中所述索引管理模块配置为在清空所述没有读取请求的数据源中的数据之后,重建被清空的数据源的索引。
6.根据权利要求1所述的系统,其中所述双写管理模块配置为同步地或异步地将数据写入第一和第二数据源。
7.根据权利要求1所述的系统,其中所述双写管理模块配置为如果将数据写入第一和第二数据源失败,则分别将写入失败的数据存放至对应缓存队列;以及
通过独立的入库线程来将所述写入失败的数据再次写入相应数据源,直到将所述写入失败的数据写入所述第一和第二数据源为止。
8.根据权利要求7所述的系统,其中所述双写管理模块还配置为响应于写入失败的次数超过预定次数,则进行报警以便确保将所有数据写入第一和第二数据源。
9.一种定期清除数据库数据的方法,包括:
将数据写入第一和第二数据源;
针对数据读取操作分配第一和第二数据源之一;以及
在第一和第二数据源之间进行切换,
其中所述切换包括:
根据设定周期,在第一和第二数据源之间进行切换;以及
响应于执行了数据源切换,清空没有读取请求的数据源中的数据。
10.根据权利要求9所述的方法,其中响应于执行了数据源切换,对没有读取请求的数据源执行truncate清空。
11.一种定期清除数据库数据的系统,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求9或10所述的定期清除数据库数据的方法。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如权利要求9或10所述的定期清除数据库数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610363451.0A CN107436898B (zh) | 2016-05-27 | 2016-05-27 | 定期清除数据库数据的方法和系统和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610363451.0A CN107436898B (zh) | 2016-05-27 | 2016-05-27 | 定期清除数据库数据的方法和系统和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107436898A CN107436898A (zh) | 2017-12-05 |
CN107436898B true CN107436898B (zh) | 2020-06-05 |
Family
ID=60453557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610363451.0A Active CN107436898B (zh) | 2016-05-27 | 2016-05-27 | 定期清除数据库数据的方法和系统和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107436898B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109669927A (zh) * | 2018-11-27 | 2019-04-23 | 南京苏宁易付宝网络科技有限公司 | 一种数据源切换方法及系统 |
CN113515362B (zh) * | 2021-07-12 | 2023-10-20 | 广州云从洪荒智能科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1400551A (zh) * | 2001-08-07 | 2003-03-05 | 华为技术有限公司 | 一种数据库备份和对上网时间记录表备份的方法 |
CN1426244A (zh) * | 2001-12-20 | 2003-06-25 | 深圳市中兴通讯股份有限公司上海第二研究所 | 数据主备内存处理方法 |
CN102073697A (zh) * | 2010-12-28 | 2011-05-25 | 中兴通讯股份有限公司 | 一种数据处理方法及装置 |
CN102200972A (zh) * | 2010-03-24 | 2011-09-28 | 腾讯科技(北京)有限公司 | 一种数据库维护方法和设备 |
-
2016
- 2016-05-27 CN CN201610363451.0A patent/CN107436898B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1400551A (zh) * | 2001-08-07 | 2003-03-05 | 华为技术有限公司 | 一种数据库备份和对上网时间记录表备份的方法 |
CN1426244A (zh) * | 2001-12-20 | 2003-06-25 | 深圳市中兴通讯股份有限公司上海第二研究所 | 数据主备内存处理方法 |
CN102200972A (zh) * | 2010-03-24 | 2011-09-28 | 腾讯科技(北京)有限公司 | 一种数据库维护方法和设备 |
CN102073697A (zh) * | 2010-12-28 | 2011-05-25 | 中兴通讯股份有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107436898A (zh) | 2017-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108519862B (zh) | 区块链系统的存储方法、装置、系统和存储介质 | |
US11537659B2 (en) | Method for reading and writing data and distributed storage system | |
US10289315B2 (en) | Managing I/O operations of large data objects in a cache memory device by dividing into chunks | |
JP6304406B2 (ja) | ストレージ装置、プログラム、情報処理方法 | |
CN105843551B (zh) | 高性能和大容量储存重复删除中的数据完整性和损耗电阻 | |
US11625374B2 (en) | Eventual consistency in a deduplicated cloud storage system | |
US9037819B2 (en) | Source cleaning cascaded volumes using reference counts | |
US20170046099A1 (en) | Storing metadata | |
US10817390B2 (en) | Imparting durability to a transactional memory system | |
US20190325048A1 (en) | Transaction encoding and transaction persistence according to type of persistent storages | |
US11042491B2 (en) | Point in time copy operations from source volumes to space efficient target volumes in two stages via a non-volatile storage | |
CN103810060A (zh) | 基于分布式数据库的数据备份方法及其系统 | |
US10795579B2 (en) | Methods, apparatuses, system and computer program products for reclaiming storage units | |
CN110597663A (zh) | 一种事务处理方法及装置 | |
WO2015015339A1 (en) | A method for a logging process in a data storage system | |
TWI823504B (zh) | 非暫態電腦可讀取媒體、儲存裝置、及儲存方法 | |
CN107436898B (zh) | 定期清除数据库数据的方法和系统和计算机可读存储介质 | |
US9690658B2 (en) | Distributed storage system and method | |
US9898468B2 (en) | Single pass file system repair with copy on write | |
CN113253932B (zh) | 一种分布式存储系统的读写控制方法和系统 | |
CN105659214B (zh) | 数据单元集合的检查点设置 | |
CN109508140B (zh) | 存储资源管理方法、装置、电子设备及电子设备、系统 | |
CN111971667A (zh) | 可恢复的合并排序 | |
KR100951099B1 (ko) | 데이터 저장 관리 방법 및 그 방법을 수행하기 위한프로그램이 기록된 기록매체 | |
CN114490509A (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 |