CN116257531B - 一种数据库空间回收方法 - Google Patents
一种数据库空间回收方法 Download PDFInfo
- Publication number
- CN116257531B CN116257531B CN202310546731.5A CN202310546731A CN116257531B CN 116257531 B CN116257531 B CN 116257531B CN 202310546731 A CN202310546731 A CN 202310546731A CN 116257531 B CN116257531 B CN 116257531B
- Authority
- CN
- China
- Prior art keywords
- database table
- data
- backup
- database
- updated
- 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
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/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
-
- 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/245—Query processing
- G06F16/2455—Query execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请涉及一种数据库空间回收方法、装置、计算机设备和存储介质。所述方法包括:响应于针对目标数据库的数据更新操作,获取关联的第一数据库表,以及匹配的更新数据;在数据更新操作表征修改操作的情况下,将用于对原始数据进行修改的更新数据,写入预先创建的与第一数据库表结构相同的第二数据库表,并在第一数据库表中将原始数据标记为可回收空间;在数据更新操作表征新增操作的情况下,将用于在第一数据库表中新增的更新数据,写入第二数据库表;在目标数据库满足数据更新条件的情况下,将第二数据库表写入第一数据库表,并回收第一数据库表中标记的可回收空间,以得到更新后的第一数据库表。采用本方法能提高数据库更新的智能性。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据库空间回收方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着数据处理技术的发展,出现了一种对数据库中的数据进行更新的方法,该方法可以通过数据库 Vacuum操作来实现,该方法在数据库中数据删除或更新过程中,数据占用的空间并不会立即被释放,而是被标记为可回收空间,之后则可以Vacuum 操作将记为可回收空间的数据从数据库中删除,并将空闲空间的信息保存到一个系统表中,同时还可以将数据块中的有效数据向前移动,以填补已删除或更新数据所留下的空洞,以提高数据库的存储效率。
然而,上述通过Vacuum 操作实现的数据库更新,由于 Vacuum 操作需要在数据库中进行大量的 I/O 操作,因此可能会占用大量的系统资源,导致数据库的响应时间变慢。并且Vacuum 操作会生成临时文件,这些文件需要占用一定的磁盘空间,当磁盘空间不足时,Vacuum 操作可能会失败,从而影响到数据库的正常运行。另外,Vacuum 操作需要在数据库停机期间进行,这会影响到数据库的正常运行。可见,现有技术中通过Vacuum操作实现的数据库更新方式不够智能。
发明内容
基于此,有必要针对上述技术问题,提供一种数据库空间回收方法、装置、计算机设备和计算机可读存储介质。
第一方面,本申请提供了一种数据库空间回收方法,所述方法包括:
响应于针对目标数据库的数据更新操作,获取所述目标数据库关联的第一数据库表,以及所述数据更新操作相匹配的更新数据;
在所述数据更新操作表征数据修改操作的情况下,将用于对所述第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与所述第一数据库表结构相同的第二数据库表,并在所述第一数据库表中将所述原始数据标记为可回收空间;
在所述数据更新操作表征数据新增操作的情况下,将用于在所述第一数据库表中新增数据的更新数据,写入所述第二数据库表;
在所述目标数据库满足预先设定的数据更新条件的情况下,将所述第二数据库表写入所述第一数据库表,并回收所述第一数据库表中标记的所述可回收空间,以得到更新后的第一数据库表。
在其中一个实施例中,所述将所述第二数据库表写入所述第一数据库表,并回收所述第一数据库表中标记的所述可回收空间,以得到更新后的第一数据库表,包括:对所述第一数据库表进行备份处理,得到第一备份数据库表,以及对所述第二数据库表进行备份处理,得到第二备份数据库表;将所述第二备份数据库表写入所述第一备份数据库表,并回收所述第一备份数据库表中标记的所述可回收空间,得到更新后的第一备份数据库表;根据所述更新后的第一备份数据库表,得到所述更新后的第一数据库表。
在其中一个实施例中,所述对所述第一数据库表进行备份处理,得到第一备份数据库表,以及对所述第二数据库表进行备份处理,得到第二备份数据库表,包括:对所述第一数据库表进行备份处理,得到第一备份数据库表以及第一原始备份表,以及对所述第二数据库表进行备份处理,得到第二备份数据库表以及第二原始备份表;所述根据所述更新后的第一备份数据库表,得到所述更新后的第一数据库表,包括:比对所述第一数据库表以及所述第一原始备份表,获取所述第一数据库表与所述第一原始备份表的第一差异数据,以及比对所述第二数据库表以及所述第二原始备份表,获取所述第二数据库表与所述第二原始备份表的第二差异数据;将所述第一差异数据以及所述第二差异数据写入所述更新后的第一备份数据库表,得到所述更新后的第一数据库表。
在其中一个实施例中,所述将所述第一差异数据以及所述第二差异数据写入所述更新后的第一备份数据库表,得到所述更新后的第一数据库表,包括:将所述第一差异数据以及所述第二差异数据写入所述更新后的第一备份数据库表,得到待校验数据库表;对所述待校验数据库表进行一致性校验,若所述待校验数据库表的一致性校验结果为校验通过,则对所述目标数据库进行数据增量备份,并将所述待校验数据库表作为所述更新后的第一数据库表。
在其中一个实施例中,所述对所述待校验数据库表进行一致性校验之后,还包括:若所述待校验数据库表的一致性校验结果为校验不通过,则将所述待校验数据库表还原为所述第一原始备份表,并将还原后的数据库表作为新的第一备份数据库表,返回执行将所述第二备份数据库表写入所述第一备份数据库表,并回收所述第一备份数据库表中标记的所述可回收空间,得到更新后的第一备份数据库表的步骤,直到得到的待校验数据库表的一致性校验结果为校验通过。
在其中一个实施例中,所述将所述第一差异数据以及所述第二差异数据写入所述更新后的第一备份数据库表,得到所述更新后的第一数据库表之后,还包括:将所述第二数据库表、所述第一备份数据库表以及第一原始备份表、所述第二备份数据库表以及第二原始备份表进行删除处理,并创建与所述更新后的第一数据库表的结构相同的空白数据库表,作为与所述更新后的第一数据库表结构相同的更新后的第二数据库表。
在其中一个实施例中,所述数据更新操作还包括数据删除操作;所述在所述目标数据库满足预先设定的数据更新条件的情况下,将所述第二数据库表写入所述第一数据库表之前,还包括:在所述数据更新操作表征数据删除操作的情况下,在所述第一数据库表中将与所述数据删除操作对应的待删除数据标记为所述可回收空间。
在其中一个实施例中,所述数据更新条件包括更新时间条件;所述在所述目标数据库满足预先设定的数据更新条件的情况下,将所述第二数据库表写入所述第一数据库表,并回收所述第一数据库表中标记的所述可回收空间,以得到更新后的第一数据库表,包括:在当前时间满足所述更新时间条件的情况下,将所述第二数据库表写入所述第一数据库表,并回收所述第一数据库表中标记的所述可回收空间,以得到更新后的第一数据库表。
在其中一个实施例中,所述响应于针对目标数据库的数据更新操作,获取所述目标数据库关联的第一数据库表之前,还包括:响应于用户账户针对所述目标数据库的登录操作,获取所述登录操作对应的登录信息;对所述登录信息进行身份验证,若所述登录信息的身份验证结果为验证通过,则接收所述用户账户对所述目标数据库执行的数据库操作;所述响应于针对目标数据库的数据更新操作,获取所述目标数据库关联的第一数据库表,以及所述数据更新操作相匹配的更新数据,包括:若所述数据库操作表征数据更新操作,则获取所述目标数据库关联的第一数据库表,以及所述数据更新操作相匹配的更新数据。
在其中一个实施例中,所述接收所述用户账户对所述目标数据库执行的数据库操作之后,还包括:若所述数据库操作表征数据查询操作,则从所述第一数据库表以及所述第二数据库表中获取所述数据查询操作相匹配的待查询数据,并将所述待查询数据返回所述用户账户。
第二方面,本申请还提供了一种数据库空间回收装置,所述装置包括:
更新数据获取模块,用于响应于针对目标数据库的数据更新操作,获取所述目标数据库关联的第一数据库表,以及所述数据更新操作相匹配的更新数据;
修改数据写入模块,用于在所述数据更新操作表征数据修改操作的情况下,将用于对所述第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与所述第一数据库表结构相同的第二数据库表,并在所述第一数据库表中将所述原始数据标记为可回收空间;
新增数据写入模块,用于在所述数据更新操作表征数据新增操作的情况下,将用于在所述第一数据库表中新增数据的更新数据,写入所述第二数据库表;
数据库表更新模块,用于在所述目标数据库满足预先设定的数据更新条件的情况下,将所述第二数据库表写入所述第一数据库表,并回收所述第一数据库表中标记的所述可回收空间,以得到更新后的第一数据库表。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
响应于针对目标数据库的数据更新操作,获取所述目标数据库关联的第一数据库表,以及所述数据更新操作相匹配的更新数据;
在所述数据更新操作表征数据修改操作的情况下,将用于对所述第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与所述第一数据库表结构相同的第二数据库表,并在所述第一数据库表中将所述原始数据标记为可回收空间;
在所述数据更新操作表征数据新增操作的情况下,将用于在所述第一数据库表中新增数据的更新数据,写入所述第二数据库表;
在所述目标数据库满足预先设定的数据更新条件的情况下,将所述第二数据库表写入所述第一数据库表,并回收所述第一数据库表中标记的所述可回收空间,以得到更新后的第一数据库表。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
响应于针对目标数据库的数据更新操作,获取所述目标数据库关联的第一数据库表,以及所述数据更新操作相匹配的更新数据;
在所述数据更新操作表征数据修改操作的情况下,将用于对所述第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与所述第一数据库表结构相同的第二数据库表,并在所述第一数据库表中将所述原始数据标记为可回收空间;
在所述数据更新操作表征数据新增操作的情况下,将用于在所述第一数据库表中新增数据的更新数据,写入所述第二数据库表;
在所述目标数据库满足预先设定的数据更新条件的情况下,将所述第二数据库表写入所述第一数据库表,并回收所述第一数据库表中标记的所述可回收空间,以得到更新后的第一数据库表。
上述数据库空间回收方法、装置、计算机设备和存储介质,通过响应于针对目标数据库的数据更新操作,获取目标数据库关联的第一数据库表,以及数据更新操作相匹配的更新数据;在数据更新操作表征数据修改操作的情况下,将用于对第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与第一数据库表结构相同的第二数据库表,并在第一数据库表中将原始数据标记为可回收空间;在数据更新操作表征数据新增操作的情况下,将用于在第一数据库表中新增数据的更新数据,写入第二数据库表;在目标数据库满足预先设定的数据更新条件的情况下,将第二数据库表写入第一数据库表,并回收第一数据库表中标记的可回收空间,以得到更新后的第一数据库表。本申请通过在进行数据更新操作时,通过将更新数据写入与目标数据库关联的第一数据库表结构相同的第二数据库表,并且如果数据更新操作为数据修改操作时,还可以在第一数据库表中将需要修改的原始数据标记为可回收空间,之后在目标数据库满足设定的数据更新条件时,则可以将述第二数据库表写入第一数据库表,并回收第一数据库表中标记的可回收空间,从而得到更新后的第一数据库表,通过上述方式可以实现目标数据库的第一数据库表的更新,相比于传统技术中通过Vacuum 操作实现的数据库更新,本申请不需要在数据库中进行大量的I/O 操作,因此也不会占用大量的系统资源,同时也不会占用大量磁盘空间,也不需要停机维护,可以维持数据库的连续性作业,因此,本申请提供的数据库空间回收方法可以提高数据库更新的智能性。
附图说明
图1为一个实施例中数据库空间回收方法的应用环境图;
图2为一个实施例中数据库空间回收方法的流程示意图;
图3为一个实施例中得到更新后的第一数据库表的流程示意图;
图4为另一个实施例中得到更新后的第一数据库表的流程示意图;
图5为一个应用实例中通过数据库 Vacuum进行数据库更新的流程示意图;
图6为一个应用实例中替代数据库 Vacuum进行数据库更新的流程示意图;
图7为一个实施例中数据库空间回收装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据库空间回收方法,可以应用于如图1所示的应用环境中。其中,用户账户的终端101通过网络与服务器102进行通信。具体来说,在用户账户需要对服务器102中的数据库,即目标数据库进行数据更新时,可以通过其终端101触发针对目标数据库的数据更新操作,服务器102则可以对该操作进行响应,从而得到目标数据库关联的第一数据库表,以及更新操作匹配的更新数据。并且,如果该更新操作是将第一数据库表中存储的原始数据进行修改的数据修改操作时,则可以将该更新操作写入到预先构建的与第一数据库表结构相同的第二数据库表中,并在第一数据库表中将原始数据标记成可回收空间,而如果该更新操作是在第一数据库表中新增数据的新增操作,则只需将该更新数据写入第二数据库表。之后,在目标数据库满足数据更新条件时,即可将第二数据库表中的数据写入第一数据库表,并且回收掉第一数据库表中标记的可回收空间,从而实现第一数据库表的更新。其中,用户账户的终端101可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备。服务器102可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据库空间回收方法,以该方法应用于图1中的服务器102为例进行说明,包括以下步骤:
步骤S201,响应于针对目标数据库的数据更新操作,获取目标数据库关联的第一数据库表,以及数据更新操作相匹配的更新数据。
其中,目标数据库指的是需要进行数据更新数据库,而数据更新操作则是用户账户触发的用于对目标数据库进行数据更新的操作,而第一数据库表则是目标数据库对应的数据库表,该数据库表中可以存储有目标数据库的数据,而更新数据则指的是用于更新第一数据库表中存储数据的更新数据,例如可以是用于在第一数据库表中新增的数据,或者用于修改第一数据库表中存储数据的修改数据等等。具体来说,当用户账户需要对目标数据库的数据进行更新时,可以通过其终端101向服务器102触发用于更新其包含的目标数据库的数据更新操作,之后服务器102则可以对该数据更新操作进行响应,从而得到目标数据库所关联的数据库表,即得到第一数据库表,以及该数据更新操作相匹配的更新数据。
步骤S202,在数据更新操作表征数据修改操作的情况下,将用于对第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与第一数据库表结构相同的第二数据库表,并在第一数据库表中将原始数据标记为可回收空间。
数据修改操作则指的是用于修改第一数据库表中数据的操作,本实施例中,数据更新操作可以包含有对第一数据库表中数据进行修改的操作,而原始数据则指的是该修改操作所对应的,预先存储于第一数据库表中的数据。例如,第一数据库表中可以预先存储有数据A、数据B以及数据C,而数据修改操作时用于将数据B修改为数据D,那么数据B则可以作为原始数据,而数据D则作为更新数据。第二数据库表则是预先创建的和第一数据库表结构相同的数据库表,在进行数据更新前,服务器102可以预先创建一个和第一数据库表结构相同的空白数据库表,作为第二数据库表,并且该第二数据库表可以用于在触发数据更新操作时,将对应的更新数据写入第二数据库表,而不是直接写入至存储目标数据库全量数据的第一数据库表,并且由于数据修改操作需要对第一数据库表中相应原始数据进行修改,因此为了节省第一数据库表的存储空间,服务器102还可以将该原始数据占用的空间从第一数据库表中回收,因此,在进行数据修改操作时,服务器102还可以对原始数据添加标记,将其标记为可回收空间,来表征需要对原始数据所占用的空间进行回收。
以第一数据库表中存储的数据B为原始数据为例,如果数据修改操作是用于将数据B修改为数据D,目标服务器102可以将数据D写入预先创建的与第一数据库表结构相同的第二数据库表中,并且还可以在第一数据库表中将数据B添加标记,将其标记为可回收空间。
步骤S203,在数据更新操作表征数据新增操作的情况下,将用于在第一数据库表中新增数据的更新数据,写入第二数据库表。
而数据新增操作则是用于在第一数据库表中新添加数据的操作,由于该操作不会变更第一数据库表中原先存储的数据,因此该过程不涉及第一数据库表存储空间的回收,在这种情况下,服务器102只需要将新增的数据,即新增操作对应的更新数据写入第二数据库表,即可完成更新数据的存储。
步骤S204,在目标数据库满足预先设定的数据更新条件的情况下,将第二数据库表写入第一数据库表,并回收第一数据库表中标记的可回收空间,以得到更新后的第一数据库表。
数据更新条件则指的是预先设定的,用于服务器102更新目标数据库的更新条件,该更新条件例如可以是服务器102的系统性能处于充裕的条件,即在服务器102的系统性能充裕情况下,服务器102可以执行针对目标数据库的更新操作,具体是通过将第二数据库表中存储的数据,即存储的更新数据写入第一数据库表中,同时回收第一数据库表中标记的可回收空间,从而得到更新后的第一数据库表,实现目标数据库的数据更新。
上述数据库空间回收方法中,通过响应于针对目标数据库的数据更新操作,获取目标数据库关联的第一数据库表,以及数据更新操作相匹配的更新数据;在数据更新操作表征数据修改操作的情况下,将用于对第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与第一数据库表结构相同的第二数据库表,并在第一数据库表中将原始数据标记为可回收空间;在数据更新操作表征数据新增操作的情况下,将用于在第一数据库表中新增数据的更新数据,写入第二数据库表;在目标数据库满足预先设定的数据更新条件的情况下,将第二数据库表写入第一数据库表,并回收第一数据库表中标记的可回收空间,以得到更新后的第一数据库表。本申请通过在进行数据更新操作时,通过将更新数据写入与目标数据库关联的第一数据库表结构相同的第二数据库表,并且如果数据更新操作为数据修改操作时,还可以在第一数据库表中将需要修改的原始数据标记为可回收空间,之后在目标数据库满足设定的数据更新条件时,则可以将述第二数据库表写入第一数据库表,并回收第一数据库表中标记的可回收空间,从而得到更新后的第一数据库表,通过上述方式可以实现目标数据库的第一数据库表的更新,相比于传统技术中通过Vacuum 操作实现的数据库更新,本申请不需要在数据库中进行大量的 I/O 操作,因此也不会占用大量的系统资源,同时也不会占用大量磁盘空间,也不需要停机维护,可以维持数据库的连续性作业,因此,本申请提供的数据库空间回收方法可以提高数据库更新的智能性。
在一个实施例中,如图3所示,步骤S204可以进一步包括:
步骤S301,对第一数据库表进行备份处理,得到第一备份数据库表,以及对第二数据库表进行备份处理,得到第二备份数据库表。
其中,第一备份数据库表指的是第一数据库表对应的备份表,而第二备份数据库表则指的是第二数据库表所对应的备份表,由于数据库表写入过程通常需要对数据库表进行锁定处理,那么在这种情况下则可能会影响用户账户对数据库诸如查询等相关操作,因此,本实施例中,在进行数据库表写入的过程中,并不是直接将第二数据库表写入第一数据库表,而是通过将第二数据库表对应的备份表,写入至第一数据库表对应的备份表的方式实现写入,通过该方式则不需要锁定第一数据库表以及第二数据库表,从而可以保证第一数据库表以及第二数据库表的持续使用。具体来说,服务器102在目标数据库满足预先设定的数据更新条件时,可以先分别对第一数据库表以及第二数据库表进行备份处理,从而分别得到第一备份数据库表以及第二备份数据库表。
步骤S302,将第二备份数据库表写入第一备份数据库表,并回收第一备份数据库表中标记的可回收空间,得到更新后的第一备份数据库表。
更新后的第一备份数据库表则指的是利用第二备份数据库表对第一备份数据库表进行更新后,得到的新的第一备份数据库表,由于第一备份数据库表是由第一数据库表备份而来,因此其存储有与第一数据库表相同的内容,同时由于第一数据库表中包含有可回收空间的标记,因此在第一备份数据库表中也可以携带上述可回收空间的标记。同理,由于第二备份数据库表是由第二数据库表备份而来,因此其存储有与第二数据库表相同的内容,即第二备份数据库表中也可以存储有数据更新操作对应的更新数据。因此服务器102在利用第二备份数据库表更新第一备份数据库表的过程中,可以是先将第二备份数据库表中存储的数据写入第一备份数据库表,同时回收第一备份数据库表中标记的可回收空间,进而得到更新后的第一备份数据库表。
步骤S303,根据更新后的第一备份数据库表,得到更新后的第一数据库表。
最后,服务器102得到更新后的第一备份数据库表后,即可根据上述更新后的第一备份数据库表,来进一步得到更新后的第一数据库表,该过程可以是服务器102直接将更新后的第一备份数据库表作为更新后的第一数据库表,也可以是服务器102对更新后的第一备份数据库表进行进一步的处理后,例如可以是对更新后的第一备份数据库表进行校验处理,在校验通过后才将其作为更新后的第一数据库表。
本实施例中,服务器102可以对第一数据库表以及第二数据库表进行备份处理,从而可以通过利用第一数据库表以及第二数据库表分别对应的备份表来实现数据库表的更新,而不需要直接对第一数据库表以及第二数据库表进行更新,可以避免在数据库表写入过程中,对第一数据库表以及第二数据库表进行锁定,因此可以在数据库表更新过程中,不影响用户账户针对第一数据库表以及第二数据库表的使用,从而进一步提高数据库更新的智能性。
进一步地,步骤S301还可以进一步包括:对第一数据库表进行备份处理,得到第一备份数据库表以及第一原始备份表,以及对第二数据库表进行备份处理,得到第二备份数据库表以及第二原始备份表;步骤S303还可以进一步包括:比对第一数据库表以及第一原始备份表,获取第一数据库表与第一原始备份表的第一差异数据,以及比对第二数据库表以及第二原始备份表,获取第二数据库表与第二原始备份表的第二差异数据;将第一差异数据以及第二差异数据写入更新后的第一备份数据库表,得到更新后的第一数据库表。
第一原始备份表则是备份有第一数据库表原始内容的备份表,而第二数据库表则是备份有第二数据库表原始内容的备份表,上述备份表在数据库更新的过程中,不进行相关操作,而是用于备份第一数据库表与第二数据库表在满足数据更新条件时存储的内容。本实施例中,由于利用第二备份数据库表更新第一备份数据库表过程中,不会锁定第一数据库表与第二数据库表,因此在进行第一备份数据库表更新的过程中,并且该更新过程通常需要一定的时间来完成,那么在这段时间内,第一数据库表与第二数据库表的数据也可能发生变化,那么此时得到的更新后的第一备份数据库表可能无法反映出最新的目标数据库的数据更新情况,因此无法直接将其作为更新后的第一数据库表。
为了解决这种情况,本实施例中,服务器102在进行第一数据库表与第二数据库表进行备份处理时,除了备份出第一备份数据库表与第二备份数据库表以外,还可以进一步将第一数据库表备份为第一原始备份表,以及将第二数据库表备份为第二原始备份表。之后,在得到更新后的第一备份数据库表后,服务器102还可以进一步将当前的第一数据库表和第一原始备份表进行比对,以及对第二数据库表以及第二原始备份表进行比对,来判断出是否存在第一差异数据,即当前的第一数据库表和第一原始备份表的差异数据,以及是否存在第二差异数据,即当前的第二数据库表和第二原始备份表的差异数据。
如果存在第一差异数据与第二差异数据,那么则表明在更新第一备份数据库表的过程中,也存在针对目标数据库的书库更新操作,那么在这种情况下,为了保证更新后的第一数据库表的实时准确性,即可将上述第一差异数据以及第二差异数据写入更新后的第一备份数据库表,来得到更新后的第一数据库表。
本实施例中,在进行第一数据库表与第二数据库表进行备份处理时,还可以备份得到第一原始备份表以及第二原始备份表,从而在完成第一备份数据库表的更新后,则可以比对当前第一数据库表以及第一原始备份表,以及比对第二数据库表以及第二原始备份表,并且将差异数据写入更新后的第一备份数据库表,来得到更新后的第一数据库表,从而可以确保第一数据库表的实时准确性。
进一步地,如图4所示,将第一差异数据以及第二差异数据写入更新后的第一备份数据库表,得到更新后的第一数据库表,可以进一步包括:
步骤S401,将第一差异数据以及第二差异数据写入更新后的第一备份数据库表,得到待校验数据库表。
待校验数据库表指的是需要进行一致性校验处理的数据库表,本实施例中,服务器102在完成第一差异数据以及第二差异数据的写入后,还需要对完成写入后的数据库表,即待校验数据库表进行一致性校验处理,以确保数据库事务的四个基本属性ACID,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)属性成立,保障数据库的可靠性和完整性。
步骤S402,对待校验数据库表进行一致性校验,若待校验数据库表的一致性校验结果为校验通过,则对目标数据库进行数据增量备份,并将待校验数据库表作为更新后的第一数据库表。
之后,如果待校验数据库表的一致性校验结果为校验通过,即待校验数据库表成功通过一致性校验时,服务器102则可以对目标数据库进行数据增量备份,同时将待校验数据库表作为更新后的第一数据库表,例如可以是将待校验数据库表与第一数据库表进行调换处理,来完成对目标数据库的更新处理。
本实施例中,服务器102在将第一差异数据以及第二差异数据写入更新后的第一备份数据库表,从而得到待校验数据库表后,还可以对待校验数据库表进行一致性校验处理,并且只有在一致性校验通过的情况下才对目标数据库进行数据增量备份,并将其作为更新后的第一数据库表,从而可以保障数据库的可靠性和完整性。
另外,步骤S401之后,还可以包括:若待校验数据库表的一致性校验结果为校验不通过,则将待校验数据库表还原为第一原始备份表,并将还原后的数据库表作为新的第一备份数据库表,返回执行步骤S302,直到得到的待校验数据库表的一致性校验结果为校验通过。
而如果待校验数据库表的一致性校验结果为校验不通过,那么为了保证保障数据库的可靠性和完整性,则需要将待校验数据库表进行还原,并且由于在对第一数据库表进行备份处理时,还备份有第一原始备份表,即第一原始备份表与最开始备份得到的第一备份数据库表的内容相同,因此服务器102可以将 待校验数据库表还原成为第一原始备份表,并再次将还原后得到的数据库表作为新的第一备份数据库表,从而再次执行将第二备份数据库表写入第一备份数据库表,并回收第一备份数据库表中标记的可回收空间,即利用第二备份数据库表更新第一备份数据库表,以及将第一差异数据以及第二差异数据写入更新后的第一备份数据库表,得到待校验数据库表的过程,直到待校验数据库表可以通过一致性校验,通过该方式,可以实现待校验数据库表的状态还原,从而可以确保数据库的可靠性和完整性。
以第一数据库表为表a为例,其备份得到的第一备份数据库表可以是表a1,第一原始备份表则可以是表a2,在服务器102完成利用第二备份数据库表对第一备份数据库表的更新过程,以及将第一差异数据以及第二差异数据的写入后,得到的待校验数据库表可以是表a3,之后如果表a3无法通过一致性校验,即可利用表a2还原表a3,并将还原后的数据库表作为新的表a1,来再次生成新的表a3,直到一致性校验通过。
本实施例中,如果待校验数据库表的一致性校验不通过,服务器102还可以将待校验数据库表还原成第一原始备份表,并且将还原后的数据库表再次作为新的第一备份数据库表,来再次得到新的待校验数据库表,直到待校验数据库表的一致性校验通过,通过上述方式,可以实现待校验数据库表的状态还原,从而可以确保数据库的可靠性和完整性。
在一个实施例中,将第一差异数据以及第二差异数据写入更新后的第一备份数据库表,得到更新后的第一数据库表之后,还包括:将第二数据库表、第一备份数据库表以及第一原始备份表、第二备份数据库表以及第二原始备份表进行删除处理,并创建与更新后的第一数据库表的结构相同的空白数据库表,作为与更新后的第一数据库表结构相同的更新后的第二数据库表。
而在完成第一数据库表的更新后,为了释放服务器102的存储空间,本实施例中服务器102还可以将更新过程中途使用的数据库表进行删除处理,即删除第二数据库表、第一备份数据库表以及第一原始备份表、第二备份数据库表以及第二原始备份表,同时,由于第二数据库表被删除,因此为了保证执行数据更新操作时可以在第二数据库表中记录更新数据,服务器102还可以再次创建与更新后的第一数据库表的结构相同的空白数据库表,作为新的第二数据库表,通过上述方式,也可以减少第二数据库表中存储的数据内容,即只用于存储更新数据,而不需要存储已经写入更新后的第一数据库表中的数据,使得增加记录和修改记录,即更新数据的写入都是在记录数少的第二数据库表中执行,也可以进一步减少I/O 操作,从而进一步减少服务器102的资源占用。
本实施例中,在完成第一数据库表的更新后,服务器102还可以将更新过程中所使用的临时数据库表进行删除,即删除第二数据库表、第一备份数据库表以及第一原始备份表、第二备份数据库表以及第二原始备份表,从而释放服务器102的存储空间,并且还可以再次创建与更新后的第一数据库表的结构相同的空白数据库表,作为新的第二数据库表,通过上述方式,可以减少第二数据库表中存储的数据内容,使得增加记录和修改记录,即更新数据的写入都是在记录数少的第二数据库表中执行,也可以进一步减少I/O 操作,从而进一步减少服务器102的资源占用。
在一个实施例中,数据更新操作还包括数据删除操作;步骤S204之前,还可以包括:在数据更新操作表征数据删除操作的情况下,在第一数据库表中将与数据删除操作对应的待删除数据标记为可回收空间。
数据删除操作是用于删除第一数据库表中存储数据的操作,本实施例中,用户账户触发的针对目标数据库的数据更新操作,还可以是用于删除第一数据库表中存储数据的数据删除操作,由于数据删除操作不需要将更新数据写入第一数据库表,而只需要在第一数据库表中将删除的数据的存储空间回收,因此如果服务器102接收到数据更新操作为数据删除操作时,则只需要在第一数据库表中将需要删除的数据,即待删除数据标记为可回收空间。那么在之后目标数据库满足预先设定的数据更新条件时,由于第一数据库表中已经将待删除数据标记为可回收空间,因此可以在服务器102利用第二数据库表更新第一数据库表的过程中,将待删除数据的占用空间进行回收,从而实现数据的删除。
本实施例中,如果数据更新操作表征为数据删除操作,服务器102则可以将待删除数据标记为可回收空间,从而实现对待删除数据占用的存储空间进行回收,从而进一步提高目标数据库的存储空间利用率。
在一个实施例中,数据更新条件包括更新时间条件;步骤S204可以进一步包括:在当前时间满足更新时间条件的情况下,将第二数据库表写入第一数据库表,并回收第一数据库表中标记的可回收空间,以得到更新后的第一数据库表。
数据更新条件可以是用于表征更新时间的更新时间条件,而当前时间则指的是当前的实时时间,本实施例中,数据更新条件可以是预先设定的一个表征更新时间的更新时间条件,该更新时间可以是由用户账户预先设置,将服务器102的系统性能充裕的时间设置为更新时间,之后即可设置一个定时任务,每次当前时间满足更新时间条件时,即当前时间到达该更新时间时,即可自动执行针对第一数据库表的更新过程。
本实施例中,服务器102可以将更新时间条件作为数据更新条件,从而可以在当前时间满足更新时间条件时,即通过定时任务的方式,实现第一数据库表的更新,从而可以只在特定的时间点完成第一数据库表的更新,减少第一数据库表更新的频率。
在一个实施例中,步骤S201之前,还可以包括:响应于用户账户针对目标数据库的登录操作,获取登录操作对应的登录信息;对登录信息进行身份验证,若登录信息的身份验证结果为验证通过,则接收用户账户对目标数据库执行的数据库操作;步骤S201可以进一步包括:若数据库操作表征数据更新操作,则获取目标数据库关联的第一数据库表,以及数据更新操作相匹配的更新数据。
登录信息指的是用户账户登录目标数据库的登录信息,例如可以是用户账户的用户账号和密码等,为了保证目标数据库的安全性,用户账户在对目标数据库进行操作前,还需要通过登录的方式实现身份验证。
具体来说,用户账户可以通过其终端101向服务器102发起登录操作,并且该登录操作可以携带有对应的用户账号以及登录密码,作为登录操作对应的登录信息,之后服务器102则可以对上述登录信息进行身份验证,只有在身份验证通过的情况下,服务器102才会接收用户账户对目标数据库执行的数据库操作,而如果身份验证未通过,则拒绝用户账户使用目标数据库。
而在用户账户的身份验证通过之后,服务器102则可以接收用户账户对目标数据库执行的数据库操作,其中如果数据库操作的操作类型表征为数据更新操作,服务器102则可以获取目标数据库关联的第一数据库表,以及数据更新操作相匹配的更新数据,来执行目标数据库的更新。
本实施例中,在用户账户执行对目标数据库的更新之前,还需要向服务器102触发登录操作,并在登录信息通过身份验证时才执行目标数据库的更新,通过上述方式可以提高数据库更新的安全性。
另外,接收用户账户对目标数据库执行的数据库操作之后,还包括:若数据库操作表征数据查询操作,则从第一数据库表中获取数据查询操作相匹配的待查询数据,并将待查询数据返回用户账户。
而如果用户账户对目标数据库执行的数据库操作是用于查询目标数据库中存储数据的数据查询操作,即不是用于更新目标数据库的数据更新操作时,由于第一数据库表以及第二数据库表中都存储有目标数据库中包含的数据,因此服务器102需要从第一数据库表以及第二数据库表中得到该数据查询操作相对应的数据,即得到待查询数据后,即可直接将待查询数据返回用户账户,通过上述方式即可以实现数据的查询。
而如果数据库操作表征数据查询操作,服务器102可以从第一数据库表以及第二数据库表中得到待查询数据,并将其返回用户账户,从而实现目标数据库中存储数据的查询,提高数据查询的效率。
在一个应用实例中,还提供了一种替代数据库 Vacuum,即替代数据库吸尘器来实现数据库更新的方法,其中数据库 Vacuum目的主要是回收被删除或更新的数据所占用的空间,以提高数据库的性能和稳定性。在数据库中,数据是以块的形式存储的,当一条记录被删除或更新时,它所占用的空间并不会立即被释放,而是被标记为可回收空间,等待Vacuum 操作来回收。
其中Vacuum 操作主要包括两个步骤:清理和整理。清理是指将标记为可回收空间的数据块从数据库中删除,并将空闲空间的信息保存到一个系统表中。整理是指将数据块中的有效数据向前移动,以填补已删除或更新数据所留下的空洞,从而提高数据库的存储效率,其中通过数据库 Vacuum实现数据库更新的过程可如图5所示。
然而上述方式实现的数据库更新,虽然可以提高数据库的性能和稳定性,但也存在以下缺点:
(1)影响性能:Vacuum 操作会对数据库的性能产生一定的影响,特别是在大型数据库中。由于 Vacuum 操作需要在数据库中进行大量的 I/O 操作,因此可能会占用大量的系统资源,导致数据库的响应时间变慢。
(2)占用空间:Vacuum 操作会生成临时文件,这些文件需要占用一定的磁盘空间。当磁盘空间不足时,Vacuum 操作可能会失败,从而影响到数据库的正常运行。
(3)需要停机维护:一些数据库的 Vacuum 操作需要在数据库停机期间进行,这会影响到数据库的正常运行。在执行 Vacuum 操作之前,需要仔细考虑和评估风险,以避免对数据库的正常运行产生不必要的影响。
(4)不可逆:Vacuum 操作是不可逆的,一旦执行,就无法还原到之前的状态。因此,在执行 Vacuum 操作之前,需要仔细考虑和评估风险,以避免不必要的损失。
(5)需要经常执行:由于数据库中的数据是不断变化的,因此需要经常执行Vacuum 操作来保持数据库的性能和稳定性。这可能会增加管理员的工作量,从而导致资源浪费和管理成本增加。
因此,本应用实例针对上述缺点,提出了一种替代数据库 Vacuum实现数据库更新的方法,即使用数据库技术取代Vacuum命令,彻底解决Vacuum带来的空间占用、停机维护、不可逆、性能等风险,如图6所示,具体包括以下步骤:
步骤1:用户在使用数据库之前需要进行身份验证,通过用户账号和密码进行登录数据库。
步骤2:当用户的操作是查询数据时,直接在数据库中走常规查询即可。
步骤3:当用户的操作是在数据库中新增或者更新记录时,即操作数据库表B,数据库系统会根据数据库表B的表结构复制一个表结构相同的空白表,即数据库表A;然后在数据库表A中进行数据增加和更新,在数据库表B中进行查询和标记可回收空间;即当在数据库表A中新增和更新一条记录时,如果在数据库表B中有相应的记录标记为可回收空间,如果在数据库表B中无相应的记录,则保持数据库表B保持不变动。
步骤4:当一天中系统性能处于充裕的情况下,备份数据库表A到数据库表C以及数据库表D;备份数据库表B到临时数据库表E和数据库表F。
步骤5,将数据库表C写入数据库表E,并用Delete命令回收空间,形成新的数据库表E,之后比对数据库表A与数据库表D,以及比对数据库表B与数据库表F,将数据库表A与数据库表D的差异部分,以及数据库表B与数据库表F的差异部分写入数据库表E,再次形成新的数据库表E。
步骤6:对新的数据库表E进行数据库一致性校验,确保数据库事务的四个基本属性ACID{即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)}属性成立,保障数据库事务的可靠性和完整性。
步骤7:如果没有通过数据库一致性校验,即不能保障数据库的可靠性和完整性,立刻通过步骤4中的数据库表F将数据库表E恢复到步骤5之前的状态。
步骤8:如果通过了数据库一致性校验,数据库系统将进行增量备份,并将数据库表E与数据库表B对换,来得到新的数据库表B。
步骤9:删除生成的数据库表A、数据库表C、数据库表D、数据库表E与数据库表F,释放空间,并再次创建与新的数据库表B结构相同的数据库表A。
本应用实例提供的数据库更新方法,可以不影响性能,采用数据库常规的命令和方法,不存在大量的I/O操作;增加记录和修改记录都是在记录数少的数据库表中执行,在数据记录数大的数据库表中仅仅执行查询或者删除标记。也不用大幅占用磁盘空间,尽管有分表动作,但是分表与主表产生的临时性文件,会尽快被清理,所占用磁盘空间并不是很大。还不需要停机维护,在数据库操作中,当数据库表被进行写操作时,需要加锁进行操作,不需要停机维护,可以维持数据库的连续性作业。并且可以回退到前状态,当在数据处理中,因使用数据库常规命令和方法,数据库的安全机制保证可以返回到前状态。另外可以定时自动执行,可以安排定时自动执行任务,任务执行完毕后执行一致性校验和备份机制。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据库空间回收方法的数据库空间回收装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据库空间回收装置实施例中的具体限定可以参见上文中对于数据库空间回收方法的限定,在此不再赘述。
在一个实施例中,如图7所示,提供了一种数据库空间回收装置,包括:更新数据获取模块701、修改数据写入模块702、新增数据写入模块703和数据库表更新模块704,其中:
更新数据获取模块701,用于响应于针对目标数据库的数据更新操作,获取目标数据库关联的第一数据库表,以及数据更新操作相匹配的更新数据;
修改数据写入模块702,用于在数据更新操作表征数据修改操作的情况下,将用于对第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与第一数据库表结构相同的第二数据库表,并在第一数据库表中将原始数据标记为可回收空间;
新增数据写入模块703,用于在数据更新操作表征数据新增操作的情况下,将用于在第一数据库表中新增数据的更新数据,写入第二数据库表;
数据库表更新模块704,用于在目标数据库满足预先设定的数据更新条件的情况下,将第二数据库表写入第一数据库表,并回收第一数据库表中标记的可回收空间,以得到更新后的第一数据库表。
在一个实施例中,数据库表更新模块704,进一步用于对第一数据库表进行备份处理,得到第一备份数据库表,以及对第二数据库表进行备份处理,得到第二备份数据库表;将第二备份数据库表写入第一备份数据库表,并回收第一备份数据库表中标记的可回收空间,得到更新后的第一备份数据库表;根据更新后的第一备份数据库表,得到更新后的第一数据库表。
在一个实施例中,数据库表更新模块704,进一步用于对第一数据库表进行备份处理,得到第一备份数据库表以及第一原始备份表,以及对第二数据库表进行备份处理,得到第二备份数据库表以及第二原始备份表;以及用于比对第一数据库表以及第一原始备份表,获取第一数据库表与第一原始备份表的第一差异数据,以及比对第二数据库表以及第二原始备份表,获取第二数据库表与第二原始备份表的第二差异数据;将第一差异数据以及第二差异数据写入更新后的第一备份数据库表,得到更新后的第一数据库表。
在一个实施例中,数据库表更新模块704,进一步用于将第一差异数据以及第二差异数据写入更新后的第一备份数据库表,得到待校验数据库表;对待校验数据库表进行一致性校验,若待校验数据库表的一致性校验结果为校验通过,则对目标数据库进行数据增量备份,并将待校验数据库表作为更新后的第一数据库表。
在一个实施例中,数据库表更新模块704,还用于若待校验数据库表的一致性校验结果为校验不通过,则将待校验数据库表还原为第一原始备份表,并将还原后的数据库表作为新的第一备份数据库表,返回执行将第二备份数据库表写入第一备份数据库表,并回收第一备份数据库表中标记的可回收空间,得到更新后的第一备份数据库表的步骤,直到得到的待校验数据库表的一致性校验结果为校验通过。
在一个实施例中,数据库表更新模块704,还用于将第二数据库表、第一备份数据库表以及第一原始备份表、第二备份数据库表以及第二原始备份表进行删除处理,并创建与更新后的第一数据库表的结构相同的空白数据库表,作为与更新后的第一数据库表结构相同的更新后的第二数据库表。
在一个实施例中,数据更新操作还包括数据删除操作;数据库空间回收装置,还包括:删除数据处理模块,用于在数据更新操作表征数据删除操作的情况下,在第一数据库表中将与数据删除操作对应的待删除数据标记为可回收空间。
在一个实施例中,数据更新条件包括更新时间条件;数据库表更新模块704,进一步用于在当前时间满足更新时间条件的情况下,将第二数据库表写入第一数据库表,并回收第一数据库表中标记的可回收空间,以得到更新后的第一数据库表。
在一个实施例中,数据库空间回收装置,还包括:登录信息验证模块,用于响应于用户账户针对目标数据库的登录操作,获取登录操作对应的登录信息;对登录信息进行身份验证,若登录信息的身份验证结果为验证通过,则接收用户账户对目标数据库执行的数据库操作;更新数据获取模块701,进一步用于若数据库操作表征数据更新操作,则获取目标数据库关联的第一数据库表,以及数据更新操作相匹配的更新数据。
在一个实施例中,数据库空间回收装置,还包括:数据库查询模块,用于若数据库操作表征数据查询操作,则从第一数据库表以及第二数据库表中获取数据查询操作相匹配的待查询数据,并将待查询数据返回用户账户。
上述数据库空间回收装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据库表数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库空间回收方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据库空间回收方法,其特征在于,所述方法包括:
响应于针对目标数据库的数据更新操作,获取所述目标数据库关联的第一数据库表,以及所述数据更新操作相匹配的更新数据;
在所述数据更新操作表征数据修改操作的情况下,将用于对所述第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与所述第一数据库表结构相同的第二数据库表,并在所述第一数据库表中将所述原始数据标记为可回收空间;
在所述数据更新操作表征数据新增操作的情况下,将用于在所述第一数据库表中新增数据的更新数据,写入所述第二数据库表;
在所述目标数据库满足预先设定的数据更新条件的情况下,将所述第二数据库表写入所述第一数据库表,并回收所述第一数据库表中标记的所述可回收空间,以得到更新后的第一数据库表;包括:对所述第一数据库表进行备份处理,得到第一备份数据库表,以及对所述第二数据库表进行备份处理,得到第二备份数据库表;将所述第二备份数据库表写入所述第一备份数据库表,并回收所述第一备份数据库表中标记的所述可回收空间,得到更新后的第一备份数据库表;根据所述更新后的第一备份数据库表,得到所述更新后的第一数据库表。
2.根据权利要求1所述的方法,其特征在于,
所述对所述第一数据库表进行备份处理,得到第一备份数据库表,以及对所述第二数据库表进行备份处理,得到第二备份数据库表,包括:
对所述第一数据库表进行备份处理,得到第一备份数据库表以及第一原始备份表,以及对所述第二数据库表进行备份处理,得到第二备份数据库表以及第二原始备份表;
所述根据所述更新后的第一备份数据库表,得到所述更新后的第一数据库表,包括:
比对所述第一数据库表以及所述第一原始备份表,获取所述第一数据库表与所述第一原始备份表的第一差异数据,以及比对所述第二数据库表以及所述第二原始备份表,获取所述第二数据库表与所述第二原始备份表的第二差异数据;
将所述第一差异数据以及所述第二差异数据写入所述更新后的第一备份数据库表,得到所述更新后的第一数据库表。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一差异数据以及所述第二差异数据写入所述更新后的第一备份数据库表,得到所述更新后的第一数据库表,包括:
将所述第一差异数据以及所述第二差异数据写入所述更新后的第一备份数据库表,得到待校验数据库表;
对所述待校验数据库表进行一致性校验,若所述待校验数据库表的一致性校验结果为校验通过,则对所述目标数据库进行数据增量备份,并将所述待校验数据库表作为所述更新后的第一数据库表。
4.根据权利要求3所述的方法,其特征在于,所述对所述待校验数据库表进行一致性校验之后,还包括:
若所述待校验数据库表的一致性校验结果为校验不通过,则将所述待校验数据库表还原为所述第一原始备份表,并将还原后的数据库表作为新的第一备份数据库表,返回执行将所述第二备份数据库表写入所述第一备份数据库表,并回收所述第一备份数据库表中标记的所述可回收空间,得到更新后的第一备份数据库表的步骤,直到得到的待校验数据库表的一致性校验结果为校验通过。
5.根据权利要求2所述的方法,其特征在于,所述将所述第一差异数据以及所述第二差异数据写入所述更新后的第一备份数据库表,得到所述更新后的第一数据库表之后,还包括:
将所述第二数据库表、所述第一备份数据库表以及第一原始备份表、所述第二备份数据库表以及第二原始备份表进行删除处理,并创建与所述更新后的第一数据库表的结构相同的空白数据库表,作为与所述更新后的第一数据库表结构相同的更新后的第二数据库表。
6.根据权利要求1所述的方法,其特征在于,所述数据更新操作还包括数据删除操作;所述在所述目标数据库满足预先设定的数据更新条件的情况下,将所述第二数据库表写入所述第一数据库表之前,还包括:
在所述数据更新操作表征数据删除操作的情况下,在所述第一数据库表中将与所述数据删除操作对应的待删除数据标记为所述可回收空间。
7.一种数据库空间回收装置,其特征在于,所述装置包括:
更新数据获取模块,用于响应于针对目标数据库的数据更新操作,获取所述目标数据库关联的第一数据库表,以及所述数据更新操作相匹配的更新数据;
修改数据写入模块,用于在所述数据更新操作表征数据修改操作的情况下,将用于对所述第一数据库表中存储的原始数据进行修改的更新数据,写入预先创建的与所述第一数据库表结构相同的第二数据库表,并在所述第一数据库表中将所述原始数据标记为可回收空间;
新增数据写入模块,用于在所述数据更新操作表征数据新增操作的情况下,将用于在所述第一数据库表中新增数据的更新数据,写入所述第二数据库表;
数据库表更新模块,用于在所述目标数据库满足预先设定的数据更新条件的情况下,将所述第二数据库表写入所述第一数据库表,并回收所述第一数据库表中标记的所述可回收空间,以得到更新后的第一数据库表;进一步用于对所述第一数据库表进行备份处理,得到第一备份数据库表,以及对所述第二数据库表进行备份处理,得到第二备份数据库表;将所述第二备份数据库表写入所述第一备份数据库表,并回收所述第一备份数据库表中标记的所述可回收空间,得到更新后的第一备份数据库表;根据所述更新后的第一备份数据库表,得到所述更新后的第一数据库表。
8.根据权利要求7所述的装置,其特征在于,数据库表更新模块,进一步用于对所述第一数据库表进行备份处理,得到第一备份数据库表以及第一原始备份表,以及对所述第二数据库表进行备份处理,得到第二备份数据库表以及第二原始备份表;以及用于比对所述第一数据库表以及所述第一原始备份表,获取所述第一数据库表与所述第一原始备份表的第一差异数据,以及比对所述第二数据库表以及所述第二原始备份表,获取所述第二数据库表与所述第二原始备份表的第二差异数据;将所述第一差异数据以及所述第二差异数据写入所述更新后的第一备份数据库表,得到所述更新后的第一数据库表。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310546731.5A CN116257531B (zh) | 2023-05-16 | 2023-05-16 | 一种数据库空间回收方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310546731.5A CN116257531B (zh) | 2023-05-16 | 2023-05-16 | 一种数据库空间回收方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116257531A CN116257531A (zh) | 2023-06-13 |
CN116257531B true CN116257531B (zh) | 2023-08-04 |
Family
ID=86684753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310546731.5A Active CN116257531B (zh) | 2023-05-16 | 2023-05-16 | 一种数据库空间回收方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116257531B (zh) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2279028C (en) * | 1999-07-29 | 2002-09-10 | Ibm Canada Limited-Ibm Canada Limitee | Dropped database table recovery |
JP5211514B2 (ja) * | 2007-03-09 | 2013-06-12 | 富士通株式会社 | 更新装置、更新方法および更新プログラム |
CN101493842A (zh) * | 2009-02-20 | 2009-07-29 | 中兴通讯股份有限公司 | Oracle数据库中大批量删除数据的方法 |
JP5665518B2 (ja) * | 2010-12-14 | 2015-02-04 | キヤノン株式会社 | データベースシステム、その情報処理方法、およびそのプログラム |
CN108287835B (zh) * | 2017-01-09 | 2022-06-21 | 腾讯科技(深圳)有限公司 | 一种数据清理方法及装置 |
CN110597797A (zh) * | 2019-09-16 | 2019-12-20 | 北京百度网讯科技有限公司 | 表空间碎片回收方法、装置、电子设备及存储介质 |
US20210216502A1 (en) * | 2020-01-09 | 2021-07-15 | Salesforce.Com, Inc. | System and method for synchronizing delete operations between primary and secondary databases |
CN114185991A (zh) * | 2021-12-14 | 2022-03-15 | 南京欧珀软件科技有限公司 | 基于分布式数据库实现数据同步的方法及相关装置 |
CN115600168A (zh) * | 2022-03-01 | 2023-01-13 | 广州图灵科技有限公司(Cn) | 一种安全型数据库系统 |
CN115098501A (zh) * | 2022-06-24 | 2022-09-23 | 中信百信银行股份有限公司 | 一种保持在线数据库磁盘空间的方法及系统 |
CN115470191A (zh) * | 2022-08-19 | 2022-12-13 | 望海康信(北京)科技股份公司 | 数据库更新系统、方法及相应计算机设备和存储介质 |
-
2023
- 2023-05-16 CN CN202310546731.5A patent/CN116257531B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN116257531A (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9183236B2 (en) | Low level object version tracking using non-volatile memory write generations | |
US10261719B2 (en) | Volume and snapshot replication | |
US10936441B2 (en) | Write-ahead style logging in a persistent memory device | |
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
CN104040481B (zh) | 用于融合、存储和检索增量式备份数据的方法和系统 | |
US20190073277A1 (en) | Transaction Recovery Method in Database System, and Database Management System | |
KR100689762B1 (ko) | 데이터베이스 시스템 및 그 데이터베이스 시스템의데이터베이스 컴포넌트를 메인 메모리에 저장하는 시스템및 방법 | |
US20110082835A1 (en) | Periodic file system checkpoint manager | |
US11347600B2 (en) | Database transaction log migration | |
US11403176B2 (en) | Database read cache optimization | |
US10013315B2 (en) | Reverse snapshot clone | |
RU2665884C2 (ru) | Способ и устройство для восстановления базы данных резервного узла | |
US8595271B1 (en) | Systems and methods for performing file system checks | |
CN116257531B (zh) | 一种数据库空间回收方法 | |
CN114924911B (zh) | Windows操作系统有效数据备份方法、装置、设备和存储介质 | |
CN115658391A (zh) | 基于QianBase MPP数据库的WAL机制的备份恢复方法 | |
US11645333B1 (en) | Garbage collection integrated with physical file verification | |
RU2526753C1 (ru) | Способ восстановления данных в системе управления базами данных | |
CN115292094B (zh) | 数据恢复处理方法、装置、设备、存储介质和程序产品 | |
CN113821476B (zh) | 数据处理方法及装置 | |
CN117171101A (zh) | 数据归档方法、装置、计算机设备和存储介质 | |
CN117539847A (zh) | 数据回迁方法、装置、系统、计算机设备和存储介质 | |
US10360145B2 (en) | Handling large writes to distributed logs | |
JP4644446B2 (ja) | 関係に関する追加動作を実行する時にターゲット・ボリュームとソース・ボリュームとの間の関係に関する情報を管理する方法、システム、およびプログラム | |
CN116225711A (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 |