CN112597160A - 数据库表维护方法、装置、服务器及存储介质 - Google Patents
数据库表维护方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN112597160A CN112597160A CN202011538922.XA CN202011538922A CN112597160A CN 112597160 A CN112597160 A CN 112597160A CN 202011538922 A CN202011538922 A CN 202011538922A CN 112597160 A CN112597160 A CN 112597160A
- Authority
- CN
- China
- Prior art keywords
- data
- data table
- database
- problem data
- inheritance
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012423 maintenance Methods 0.000 title claims abstract description 32
- 238000013479 data entry Methods 0.000 claims description 14
- 238000003780 insertion Methods 0.000 claims description 13
- 230000037431 insertion Effects 0.000 claims description 13
- 238000013508 migration Methods 0.000 claims description 10
- 230000005012 migration Effects 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004064 recycling Methods 0.000 claims description 2
- 239000000126 substance Substances 0.000 claims 1
- 238000004891 communication Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008014 freezing Effects 0.000 description 4
- 238000007710 freezing Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000005195 poor health Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer 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/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/21—Design, administration or maintenance of databases
-
- 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/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例涉及通信技术领域,公开了一种数据库表维护方法、装置、服务器及存储介质。本申请中,数据库表维护方法包括:查找数据库中是否存在满足预设条件的问题数据表;若存在问题数据表,则设置针对问题数据表的触发条件和触发操作;在检测到触发条件后,禁止将待插入问题数据表的数据写入问题数据表,执行触发操作:将待插入问题数据表的数据写入与问题数据表关联的第一继承表。通过以上技术手段,在正常响应上层应用下发数据操作指令的情况下,极大地减少问题数据表继续占用更多的空间而发生表膨胀问题,以及避免数据表进入拒绝一切事务执行的状态,在上层应用无感知的情况下实现了对数据库表的维护。
Description
技术领域
本申请实施例涉及通信技术领域,特别涉及一种数据库表维护方法、装置、服务器及存储介质。
背景技术
随着信息技术的发展,目前各种数据库系统层出不穷,其中PostgreSQL是一种开源数据库系统,由于其高性能、高速度、数据类型广、支持多版本并发控制的特点,在数据存储这一领域受到广泛的使用。但是PostgreSQL数据库的特性也使得它具有一些无法避免的缺点,例如:根据PostgreSQL数据库的特性,PostgreSQL的每一次执行单元都称为一次事务,且需要一个事务号。PostgreSQL使用32位事务号,所以事务id最大值为42亿左右,且该事务号是循环使用的,当前事务号前2^31个事务为过去的事务,当前事务号后2^31个事务为未来的事务。数据表中数据元组的最小事务号与当前事务号的差值被称为数据表的事务年龄,数据库中最大数据表的年龄称之为数据库的事务年龄。故数据库年龄不得超过2^31,否则将出现未来的事务被视为过去的事务。PostgreSQL使用vacuum(冻结)机制释放一定年龄前的事务号,使得事务的最大年龄不超过2^31。
然而,由于PostgreSQL数据库特殊的多版本并发控制MVCC机制,数据库在执行vacuum冻结操作后,在末尾页的未被使用或被标记删除的空间会被回收,然而大多数的存储空间并没有真正被释放,只能被新的记录使用,如果数据库长时间得不到维护,会导致数据表的占用空间不断膨胀,使得后续执行vacuum冻结操作的速度越来越缓慢,最终导致数据库为了避免事务id耗尽,而拒绝响应上层应用的数据操作,从而对业务产生影响。
发明内容
本申请实施例的目的在于提供一种数据库表维护方法、装置、服务器及存储介质,使得数据库中的数据表能够自动进行维护,避免数据表发生膨胀占用过多的空间后使得上层应用的操作指令无法被数据库响应。
为解决上述技术问题,本申请的实施例提供了一种数据库表维护方法,包括:查找数据库中是否存在满足预设条件的问题数据表;若存在问题数据表,则设置针对问题数据表的触发条件和触发操作;在检测到触发条件后,禁止将待插入问题数据表的数据写入问题数据表,执行触发操作;其中,触发条件包括监控到针对问题数据表的数据插入操作,触发操作包括:将待插入问题数据表的数据写入与问题数据表关联的第一继承表。
本申请的实施例还提供了一种数据库表维护装置,包括:数据表查找模块,用于查找数据库中是否存在满足预设条件的问题数据表;设置模块,用于在查找到满足预设条件的问题数据表后,设置针对问题数据表的触发条件和触发操作;数据表操作模块,用于在检测到触发条件后,禁止将待插入问题数据表的数据写入问题数据表,执行触发操作;其中,触发条件包括监控到针对问题数据表的数据插入操作,触发操作包括将待插入问题数据表的数据写入与问题数据表关联的第一继承表。
本申请实施例相对于现有技术而言,在检测到有针对问题数据表的数据插入操作时,禁止将待插入的数据插入到问题数据表中,而是将待插入的数据插入到与问题数据表关联的第一继承表中,在正常响应上层应用下发数据操作指令的情况下,将待插入到问题数据表的数据改写入至关联的第一继承表,使得问题数据表的数据量不再增加,自然体积也不再膨胀,因此极大地减少问题数据表继续占用更多的空间而发生表膨胀问题,进而避免了因执行vacuum操作时间过长而导致事务号耗尽而进入拒绝一切事务执行的状态,在上层应用无感知的情况下实现了对数据库表的维护。
另外,本实施例中在执行预设的触发操作之后,还包括:将问题数据表中的数据迁移至问题数据表的第二继承表。通过将原问题数据表中的数据迁移到另一张新的继承表中,完全释放了问题数据表所占用的空间,从而消除了表膨胀问题并杜绝了因执行vacuum操作时间过长而导致事务号耗尽而进入拒绝一切事务执行的状态的可能,更好地在上层应用无感知的情况下实现了对数据库表的维护。
另外,本实施例中将问题数据表中的数据迁移至问题数据表的第二继承表,包括:重复执行数据迁移的数据库事务直到问题数据表中的数据全部迁移到第二继承表;其中,数据库事务中的操作包括:复制问题数据表中的目标数据条目并写入第二继承表、删除问题数据表中的目标数据条目。通过以上技术手段,在迁移过程中使用事务将数据复制到继承表,将复制数据、写入数据以及删除已复制的数据合并成一个执行单元,使其具有原子性。原子性即要么迁移成功或失败,不允许复制到继承表后,已复制数据未被删除等情况出现。
另外,本实施例中与问题数据表关联的第一继承表大于一个,各第一继承表分别对应一时间段;将待插入问题数据表的数据写入与问题数据表关联的第一继承表,包括:获取数据插入操作对应数据记录的创建时间;根据创建时间,在已创建的多个第一继承表中查找时间段与创建时间匹配的第一继承表;若存在匹配的第一继承表,则将待插入问题数据表的数据写入匹配的第一继承表;若不存在匹配的第一继承表,则创建时间段与创建时间匹配的第一继承表,并将待插入问题数据表的数据写入创建的第一继承表。通过以上技术手段,将问题数据表中新插入的数据分散到多个第一继承表中,减小了第一继承表发生膨胀问题的可能。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。
图1是根据本申请第一实施例中数据库表维护方法的流程图;
图2是根据本申请第一实施例中将待插入问题数据表的数据写入第一继承表的流程图;
图3是根据本申请第二实施例中数据库表维护方法的流程图;
图4是根据本申请第二实施例中数据库事务的操作流程图;
图5是根据本申请第三实施例中数据库表维护装置的结构示意图;
图6是根据本申请第四实施例中服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本申请各实施例中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本申请的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本申请的第一实施例涉及一种数据库表维护方法。具体流程如图1所示,包括:查找数据库中是否存在满足预设条件的问题数据表;若存在问题数据表,则设置针对问题数据表的触发条件和触发操作;在检测到触发条件后,禁止将待插入问题数据表的数据写入问题数据表,执行触发操作;其中,触发条件包括监控到针对问题数据表的数据插入操作,触发操作包括:将待插入问题数据表的数据写入与问题数据表关联的第一继承表。
下面以PostgreSQL数据库为例对本实施例的数据库表维护方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施例中的数据库表维护方法如图1所示,具体包括:
步骤101,确定数据库中存在满足预设条件的问题数据表。
具体地说,在一个数据库中往往存在多个数据表,各个表的健康状况不同,通过预设条件在数据库筛选出健康状况较差的问题数据表。一般来说,数据表所占用的空间越大时,执行vacuum操作所花费的时间越长,事务号耗尽后对上层应用停止响应的可能性越大。因此数据表的健康状况可以跟据数据表所占用的空间或数据表的事务年龄来确定,即根据数据表所占用的空间或数据表的事务年龄来设计筛选问题数据表的预设条件。然后周期性的查找数据库中所有数据表的属性是否满足预设条件,并将满足预设条件的问题数据表作为问题数据表。
在一个例子中,可以通过数据表的年龄作为预设条件来对数据库中的数据表进行筛选得到问题数据表。对于PostgreSQL数据库来说,事务号最大值为42亿左右,且该事务号是循环使用的,当前事务号前2^31个事务为过去的事务,当前事务号后2^31个事务为未来的事务。数据表中数据元组的最小事务号与当前事务号的差值被称为数据表的事务年龄,数据库中最大数据表的年龄称之为数据库的事务年龄。故数据库年龄不得超过2^31,否则将出现未来的事务被视为过去的事务。PostgreSQL使用vacuum操作释放一定年龄前的事务号,使得事务的最大年龄不超过2^31。因此当数据表的年龄,即事务年龄达到一定值时,则意味着数据表可能已经占据较大的存储空间且具有事务号耗尽的风险。
在另一个例子中,还可以比较数据表的物理占用大小与数据表实际数据量的大小来判断数据表是否具有发生表膨胀的风险,例如,当数据表的物理占用大小与数据表实际数据量的大小相差较大时,表示该数据表因长期的反复冻结和重写,数据文件中存在大量的碎片,膨胀问题严重,在执行vacuum操作时处理缓慢,导致事务id即将耗尽,数据库为了避免耗尽事务id,进入拒绝一切事务执行的状态,最终导致数据库无法响应上层应用的数据操作指令。
步骤102,检测到预设的触发条件后,执行触发操作:禁止将待插入问题数据表的数据写入问题数据表。
步骤103,将待插入问题数据表的数据写入与问题数据表关联的第一继承表。
具体地说,从数据库中查找并确定问题数据表后,实时监控所有针对问题数据表的数据操作,包括:insert、delete、select、update等。当监控到针对问题数据表的insert操作时,为了避免问题数据表继续增加新的数据条目,禁止将待插入问题数据表的数据写入问题数据表中。然后将待插入问题数据表的数据写入与该问题数据表关联的第一继承表。
在一个例子中,问题数据表的触发条件以及触发操作可以通过PostgreSQL数据库的触发器功能来实现。具体地,触发器是一种由事件自动触发执行的特殊存储过程,事件可以是insert、delete、select、update等操作。触发器可根据用户的输入进行设置,需要设置的内容包括:针对的数据表的标识、针对的该数据表的操作,触发的执行函数。其中,针对的数据表的标识和针对的该数据表的操作的设置,可以理解为触发条件,触发的执行函数可以理解为触发操作。在本实施例中,触发器的触发条件是针对该问题数据表插入新数据记录;触发操作是禁止将待插入问题数据表的数据写入问题数据表,并将待插入问题数据表的数据写入与问题数据表关联的第一继承表。
采用触发器功能来实现数据插入在问题数据表与继承表间的转移,能够实现问题数据表的自动维护,同时不改变原有数据操作指令的逻辑,保证了数据表能够正常地响应上层应用对数据表的数据操作指令。
在另一个例子中,将待插入数据写入继承表的具体过程如图2所示,包括:
步骤1031,获取待插入数据的创建时间。
步骤1032,查找是否存在与待插入数据的创建时间对应的第一继承表。若存在与待插入数据的创建时间对应的第一继承表,则执行步骤1033;若不存在与待插入数据的创建时间对应的第一继承表,则执行步骤1034后再执行步骤1033。
步骤1033,将待插入数据写入与待插入数据的创建时间对应的第一继承表。
步骤1034,创建与待插入数据的创建时间对应的第一继承表。
具体地说,与问题数据表关联的第一继承表可大于一个,各第一继承表分别对应一时间段,通过表名来进行区分。例如使用时间作为标识,以月份作为表名来区分不同的第一继承表。当触发器检测到对问题数据表的插入操作时,获取待插入数据的时间属性,假定当前待插入数据的记录时间为八月份,则在所有当前存在的第一继承表中查找表名为八月份的第一继承表,如果存在表名为八月份的第一继承表,则将待插入数据写入到表名为八月份的第一继承表中。如果当前不存在八月份的第一继承表,则以八月份作为表名新创建一张关联于问题数据表的继承表作为第一继承表,然后将待插入数据写入到表名为八月份的第一继承表中。
在实际应用中,假设问题数据表名为tb_record,第一继承表的表名为tb_record_month,其中,month根据第一继承表的实际月份确定。例如将记录时间为八月份的数据插入到表名为tb_record_August的第一继承表中。
现有技术相比,本实施例在检测到有针对问题数据表的数据插入操作时,禁止将待插入的数据插入到问题数据表中,而是将待插入的数据插入到与问题数据表关联的第一继承表中,在正常响应上层应用下发数据操作指令的情况下,极大地减少问题数据表继续占用更多的空间而发生表膨胀问题。实现了在上层应用无感知的情况下对数据表进行维护的目的。
本申请的第二实施例涉及一种数据库表维护方法,第二实施例与第一实施例的区别在于:在第二实施例中,执行预设的触发操作之后,还会将问题数据表中的数据迁移到与问题数据表关联的第二继承表中。
下面对本实施例的数据库表维护方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施例中的数据库表维护方法如图3所示,具体包括:
步骤301,确定数据库中存在满足预设条件的问题数据表。
步骤302,检测到预设的触发条件后,执行触发操作:禁止将待插入问题数据表的数据写入问题数据表。
步骤303,将待插入问题数据表的数据写入与问题数据表关联的第一继承表。
步骤301至步骤303与本申请第一实施例中的步骤101至步骤103相同,相关的实施细节已在本申请第一实施例中具体说明,在此不再赘述。
步骤304,将问题数据表中的数据迁移到与问题数据表关联的第二继承表中。
步骤305,清空问题数据表中的所有数据并回收问题数据表的空间占用。
具体地说,当问题数据表不再插入新的数据后,问题数据表的年龄随着事务号的使用会继续增长,并且问题数据表因表膨胀仍然会占用大量空间。常规的vacuum冻结操作耗时长,也不能解决表膨胀问题。因此将问题表中数据进行迁移使得问题数据表所占用的空间的得到回收,通常将问题数据表中的数据迁移到一张与问题数据表相关联的空的继承表中。
在一个例子中,采用数据库事务来执行将问题数据表的数据迁移操作。具体地,数据库事务是数据库系统中一种构成单一逻辑工作单元的所有操作集合。在一个事务中,可以包含一个或多个数据库操作,但这些操作构成一个逻辑上的整体。在数据库事务执行时,其中的所有操作要么全部执行成功,要么全部不执行,即使在数据库发生故障时,这样的特性仍然是生效的。通过数据库事务的以上特性,能够保证数据迁移的操作在执行的过程中,将问题数据表的所有数据正确地迁移到第二继承表中,进而保证数据库可基于第二继承表正常响应上层应用所下发的数据操作指令。
进一步地,本实施例中数据迁移的数据库事务所包含的操作如图4所示,包括:
步骤3051,复制问题数据表中的目标数据条目。
步骤3052,将复制的目标数据条目写入第二继承表。
步骤3053,删除问题数据表中的目标数据条目。
在进行数据迁移时,重复执行数据库事务,即逐条将问题数据表中的数据条目迁移到第二继承表,直到问题数据表中的所有数据均被迁移到第二继承表中。即使在执行数据库事务时,数据库发生了故障,通过数据库系统自身的日志恢复技术也能够保证数据库事务中的操作单元的原子性,即要么迁移成功或失败,不允许复制到继承表后,已复制数据未被删除等情况出现,通过这一特点保证了数据迁移过程的稳定,降低了问题数据表数据迁移的风险。
与现有技术相比,本实施例通过将禁止针对问题数据表新插入的数据写入到问题数据表而写入第一继承表中,阻止了问题数据表的继续膨胀,同时将问题数据表中已有的数据迁移到第二继承表中实现了问题数据表占用空间的释放。从而避免问题数据表的膨胀问题,使得问题数据表不会因为表膨胀后,执行vacuum操作时间过长导致事务号耗尽而进入拒绝一切事务执行的状态,在上层应用无感知的情况下实现了对数据库表的维护。
需要说明的是,本实施例中的上述各示例均为方便理解进行的举例说明,并不对本申请的技术方案构成限定。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本申请第三实施例涉及一种数据库表维护装置,如图5所示,包括:
数据表查找模块501,用于查找数据库中是否存在满足预设条件的问题数据表;
数据表操作模块502,用于在检测到预设的触发条件后,禁止将待插入问题数据表的数据写入问题数据表,执行触发操作;其中,触发条件包括监控到针对问题数据表的数据插入操作,触发操作包括将待插入问题数据表的数据写入与问题数据表关联的第一继承表。
在一个例子中,数据表操作模块502具体包括:第一数据操作单元和第二数据操作单元。
其中,第一数据操作单元用于获取数据插入操作对应数据记录的创建时间;根据创建时间查找问题数据表的继承表中是否存在表名与创建时间对应的第一继承表;若存在第一继承表,则执行将新插入的数据写入问题数据表的第一继承表;若不存在第一继承表,则根据创建时间创建第一继承表后,执行将新插入的数据写入问题数据表的第一继承表。
第二数据操作单元用于在执行预设的触发操作之后,将问题数据表中的数据迁移至问题数据表的第二继承表,清空问题数据表中的所有数据并回收问题数据表的空间占用。
在另一个例子中,第二数据操作单元具体用于重复执行数据迁移的数据库事务直到问题数据表中的数据全部迁移到第二继承表;其中,数据库事务中的操作包括:复制问题数据表中的目标数据条目并写入第二继承表、删除问题数据表中的目标数据条目。
不难发现,本实施例为与第一、第二实施例相对应的系统实施例,本实施例可与第一、第二实施例互相配合实施。第一、第二实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一、第二实施例中。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本申请的创新部分,本实施例中并没有将与解决本申请所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本申请第四实施例涉及一种服务器,如图6所示,包括至少一个处理器601;以及,与至少一个处理器601通信连接的存储器602;其中,存储器602存储有可被至少一个处理器601执行的指令,指令被至少一个处理器601执行,以使至少一个处理器601能够执行第一、或第二实施例中的数据库表维护方法。
其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器601和存储器602的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器601处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器601。处理器601负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器602可以被用于存储处理器601在执行操作时所使用的数据。
本申请第六实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施例是实现本申请的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (10)
1.一种数据库表维护方法,其特征在于,包括:
查找数据库中是否存在满足预设条件的问题数据表;
若存在所述问题数据表,则设置针对所述问题数据表的触发条件和触发操作;
在检测到所述触发条件后,禁止将待插入所述问题数据表的数据写入所述问题数据表,执行所述触发操作;其中,所述触发条件包括监控到针对所述问题数据表的数据插入操作,所述触发操作包括:将待插入所述问题数据表的数据写入与所述问题数据表关联的第一继承表。
2.根据权利要求1所述的数据库表维护方法,其特征在于,在所述执行预设的触发操作之后,还包括:
将所述问题数据表中的数据迁移至与所述问题数据表关联的第二继承表。
3.根据权利要求2所述的数据库表维护方法,其特征在于,所述将所述问题数据表中的数据迁移至与所述问题数据表关联的第二继承表,包括:
重复执行数据迁移的数据库事务直到所述问题数据表中的数据全部迁移到所述第二继承表;
其中,所述数据库事务中的操作包括:复制所述问题数据表中的目标数据条目并写入所述第二继承表、删除所述问题数据表中的所述目标数据条目。
4.根据权利要求2所述的数据库表维护方法,其特征在于,在所述将所述问题数据表中的数据迁移至与所述问题数据表关联的第二继承表之后,还包括:
清空所述问题数据表中的所有数据并回收所述问题数据表的空间占用。
5.根据权利要求1所述的数据库表维护方法,其特征在于,与所述问题数据表关联的第一继承表大于一个,各所述第一继承表分别对应一时间段;所述将待插入所述问题数据表的数据写入与所述问题数据表关联的第一继承表,包括:
获取所述数据插入操作对应数据记录的创建时间;
根据所述创建时间,在已创建的多个所述第一继承表中查找所述时间段与所述创建时间匹配的第一继承表;
若存在所述匹配的第一继承表,则将所述待插入所述问题数据表的数据写入所述匹配的第一继承表;
若不存在所述匹配的第一继承表,则创建时间段与所述创建时间匹配的第一继承表,并将所述待插入所述问题数据表的数据写入所述创建的第一继承表。
6.根据权利要求1所述的数据库表维护方法,其特征在于,所述设置针对所述问题数据表的触发条件和触发操作,包括:
通过创建所述数据库的触发器,设置针对所述问题数据表的触发条件和触发操作。
7.根据权利要求1至6中任一项所述的数据库表维护方法,其特征在于,所述数据库为PostgreSQL数据库;所述预设条件包括以下之一或其组合:
数据表的年龄大于预设阈值、数据表的物理占用空间与实际数据量的差值大于预设门限。
8.一种数据库表维护装置,其特征在于,所述装置包括:
数据表查找模块,用于查找数据库中是否存在满足预设条件的问题数据表;
设置模块,用于在查找到所述满足预设条件的问题数据表后,设置针对所述问题数据表的触发条件和触发操作;
数据表操作模块,用于在检测到所述触发条件后,禁止将待插入所述问题数据表的数据写入所述问题数据表,执行所述触发操作;其中,所述触发条件包括监控到针对所述问题数据表的数据插入操作,所述触发操作包括将待插入所述问题数据表的数据写入与所述问题数据表关联的第一继承表。
9.一种服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一项所述的数据库表维护方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的数据库表维护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011538922.XA CN112597160A (zh) | 2020-12-23 | 2020-12-23 | 数据库表维护方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011538922.XA CN112597160A (zh) | 2020-12-23 | 2020-12-23 | 数据库表维护方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112597160A true CN112597160A (zh) | 2021-04-02 |
Family
ID=75200411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011538922.XA Pending CN112597160A (zh) | 2020-12-23 | 2020-12-23 | 数据库表维护方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597160A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503966A (zh) * | 2014-10-16 | 2015-04-08 | 杭州斯凯网络科技有限公司 | PostgreSQL大数据高效免维护自动分区方法 |
US20170300541A1 (en) * | 2016-04-15 | 2017-10-19 | Counsyl, Inc. | Analytic results management database |
CN110019130A (zh) * | 2017-12-06 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种数据库更新的方法及装置 |
CN111897821A (zh) * | 2020-08-27 | 2020-11-06 | 浪潮商用机器有限公司 | 一种pg数据库的自动化表分区方法及相关装置 |
-
2020
- 2020-12-23 CN CN202011538922.XA patent/CN112597160A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503966A (zh) * | 2014-10-16 | 2015-04-08 | 杭州斯凯网络科技有限公司 | PostgreSQL大数据高效免维护自动分区方法 |
US20170300541A1 (en) * | 2016-04-15 | 2017-10-19 | Counsyl, Inc. | Analytic results management database |
CN110019130A (zh) * | 2017-12-06 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种数据库更新的方法及装置 |
CN111897821A (zh) * | 2020-08-27 | 2020-11-06 | 浪潮商用机器有限公司 | 一种pg数据库的自动化表分区方法及相关装置 |
Non-Patent Citations (1)
Title |
---|
DIGOAL: "PostgreSQL 普通表在线转换为分区表 - online exchange to partition table", pages 2 - 5, Retrieved from the Internet <URL:https://gitee.com/yunwisdoms/PostgresBlog/blob/master/201901/20190131_01.md> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11474972B2 (en) | Metadata query method and apparatus | |
US9886464B2 (en) | Versioned bloom filter | |
US9183236B2 (en) | Low level object version tracking using non-volatile memory write generations | |
US8639731B2 (en) | Apparatus for managing plural versions of a root node for an object of a file system | |
US6675180B2 (en) | Data updating apparatus that performs quick restoration processing | |
CN107656834B (zh) | 用于基于事务日志恢复主机访问的系统和方法及存储介质 | |
US9495286B2 (en) | Method and arrangement for completion or recovery of data transactions in a flash type memory device using a commit process | |
CN110399333B (zh) | 删除快照的方法、设备和计算机程序产品 | |
CN112463058B (zh) | 一种碎片数据整理方法、装置及存储节点 | |
CN108228678B (zh) | 一种多副本数据恢复方法及装置 | |
CN113568566A (zh) | 利用索引物件来进行简易存储服务无缝迁移的方法、主装置以及存储服务器 | |
JP6293709B2 (ja) | ストレージシステムおよびストレージシステム用プログラム | |
US20180011897A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
US20110099347A1 (en) | Managing allocation and deallocation of storage for data objects | |
CN110019130A (zh) | 一种数据库更新的方法及装置 | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
CN108090128B (zh) | 一种合并存储空间回收方法、装置及电子设备 | |
CN106997305B (zh) | 一种事务处理方法与装置 | |
CN112597160A (zh) | 数据库表维护方法、装置、服务器及存储介质 | |
CN115687359A (zh) | 数据表分区方法及装置、存储介质、计算机设备 | |
CN109325005A (zh) | 一种数据处理方法和电子设备 | |
CN115437836A (zh) | 一种元数据处理方法及相关设备 | |
JP2023511743A (ja) | 確率的データ構造を使用した要求の低減 | |
CN114090538A (zh) | 数据回溯方法及装置 | |
CN117075822B (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 |