数据库的分区维护方法和装置制造方法

文档序号:6517507阅读:326来源:国知局
数据库的分区维护方法和装置制造方法
【专利摘要】本发明实施例公开了一种数据库的分区维护方法和装置,涉及数据处理领域,用于解决现有技术中在已有的表空间中无法创建新的分区导致分区创建失败的问题。本发明中,在已创建的表空间中不包含任何分区时,删除该表空间以释放该表空间占用的资源,在需要创建分区但不能够在已有的表空间中创建分区时,利用当前可用资源创建新的表空间,并在新的表空间中创建分区,从而避免了在已有的表空间中无法创建新的分区导致分区创建失败的问题。
【专利说明】数据库的分区维护方法和装置
【技术领域】
[0001]本发明涉及数据处理领域,尤其涉及一种数据库的分区维护方法和装置。
【背景技术】
[0002]在数据库应用技术中,海量数据的存储一般都会用到分区技术。该技术是将很大的一张表根据一定的规则分成多个小表并分别存储到不同的区域,这样逻辑上一张表,物理存储时,可以像多张表一样,存储于不同的位置,简化了数据库的管理活动,而且还可以改善应用性能。由于优化程序可以获知作为分区基础使用的范围值,所以它在访问表时就可以只在特定的分区直接查询。因为在查询进程中只浏览少量数据,自然就改善了查询性能。同时由于对外的接口仍是一张表,对于用户,应用是透明的,用户感觉不到分区的存在。因此,大表分区技术在海量数据存储中的应用非常广泛。
[0003]在Oracle数据库中,范围(Range)分区是Oracle最早最经典的分区算法,通过指定的分区键值的数值范围使数据存储在对应的分区上。通过分区键值的数值范围,可以知道哪些数据是存在哪个分区里的,因此比较方便大规模的数据操作。比如,一张用于保存员工信息的表中包含姓名和出生日期两个字段,指定出生日期作为分区键值,并指定该分区键值的数值范围包括I960年I月到1970年12月、1971年I月到1980年12月、1981年I月到1990年12月,那么,可以在该表对应的表空间中创建三个分区,这三个分区分别保存该表中出生日期在I960年I月到1970年12月的员工信息、出生日期在1971年I月到1980年12月的员工信息、出生日期在1981年I月到1990年12月的员工信息。
[0004]Range分区的使用非常广泛,尤其是存在时效性的海量数据。实际中通常会按照时间进行分区,这样,所有的数据按照时间分别存储在不同的分区中,当数据时效性已过需要删除数据的时候,直接删除对应的分区就可以了,非常适用海量数据的应用。
[0005]当在线系统长时运行之后,由于频繁的删除分区、创建分区,在表空间内部会产生大量的磁盘碎片,直接后果就是虽然表空间的可用空间的总量足够,但无法创建新的分区。这时就需要数据库管理员人工介入,对表空间进行磁盘碎片整理。如果维护的系统较多,这种工作量对于数据库管理人员来说也是非常大的。

【发明内容】

[0006]本发明实施例提供一种数据库的分区维护方法和装置,用于解决现有技术中在已有的表空间中无法创建新的分区导致分区创建失败的问题。
[0007]一种数据库的分区维护方法,该方法包括:
[0008]在已创建的表空间中不包含任何分区时,删除所述表空间以释放所述表空间占用的资源;
[0009]在需要创建分区时,确定是否能够在已创建的表空间中创建分区,在确定为否时,利用当前可用资源创建新的表空间,并在新的表空间中创建分区。
[0010]一种数据库的分区维护装置,该装置包括:[0011]删除单元,用于在已创建的表空间中不包含任何分区时,删除所述表空间以释放所述表空间占用的资源;
[0012]创建单元,用于在需要创建分区时,确定是否能够在已创建的表空间中创建分区,在确定为否时,利用当前可用资源创建新的表空间,并在新的表空间中创建分区。
[0013]本发明实施例提供的方案中,在已创建的表空间中不包含任何分区时,删除该表空间以释放该表空间占用的资源,在需要创建分区但不能够在已有的表空间中创建分区时,利用当前可用资源创建新的表空间,并在新的表空间中创建分区,从而避免了在已有的表空间中无法创建新的分区导致分区创建失败的问题。
【专利附图】

【附图说明】
[0014]图1为本发明实施例提供的方法流程示意图;
[0015]图2A为本发明实施例中分区删除流程示意图;
[0016]图2B为本发明实施例中分区创建流程示意图;
[0017]图3为本发明实施例提供的装置结构示意图。
【具体实施方式】
[0018]为了解决现有技术中在已有的表空间中无法创建新的分区导致分区创建失败的问题,本发明实施例提供一种数据库的分区维护方法,本方法中,在已创建的表空间中不包含任何分区时,删除该表空间,使得在需要创建分区但不能够在已有的表空间中创建分区时,可以有可利用的资源新建表空间,并在新建的表空间中创建分区,从而避免了在已有的表空间中无法创建新的分区导致分区创建失败的问题。
[0019]参见图1,本发明实施例提供的数据库的分区维护方法,包括以下步骤:
[0020]步骤10:在已创建的表空间中不包含任何分区时,删除该表空间以释放该表空间占用的资源;
[0021]步骤11:在需要创建分区时,确定是否能够在已创建的表空间中创建分区,在确定为否时,利用当前可用资源创建新的表空间,并在新的表空间中创建分区。
[0022]具体的,步骤10的实现可以采用如下两种方式之一:
[0023]第一,在删除已有分区后,确定删除的分区所在的表空间中是否不包含任何分区,在确定为是时,删除该表空间以释放该表空间占用的资源;这里,可以在一个已有分区中的数据的保存时间超过设定期限时删除该已有分区。
[0024]第二,定时确定是否存在不包含任何分区的表空间,在确定为是时,删除不包含任何分区的表空间以释放该表空间占用的资源。
[0025]具体的,步骤11中,需要创建分区的情况可以包括以下两种:
[0026]第一,在删除已有分区后,需要创建分区;
[0027]第二,根据预先设置的分区创建触发信息确定需要创建分区。
[0028]举例说明,分区创建触发信息可以是:创建分区的时间信息(比如定时创建分区)、创建分区的条件信息(比如一个新的数据库表被创建或数据库表中增加了大量新数据)。在分区创建触发信息是创建分区的时间信息时,在根据该时间信息确定创建分区的时间到达时,确定需要创建分区;在分区创建触发信息是创建分区的条件信息,在根据该条件信息确定满足创建分区的条件时,确定需要创建分区。
[0029]具体的,步骤11中,在确定是否能够在已创建的表空间中创建分区时,该已创建的表空间具体可以是最近创建的表空间即创建时间最晚的表空间,判断是否能够在已创建的表空间中创建分区的依据是已创建的表空间中包含的分区的数目是否达到预先设定的门限值,此时,步骤11中确定是否能够在已创建的表空间中创建分区的具体实现如下:
[0030]判断最近创建的表空间(即创建时间最晚的表空间)中包含的分区的数目是否达到预先设定的门限值,若是,则确定不能够在已创建的表空间中创建分区,否则,确定能够在已创建的表空间中创建分区。这里,预先设定的门限值为不小于I的正整数。
[0031]当然,已创建的表空间并不局限于最近创建的表空间,可以是任何已有的表空间。判断是否能够在已创建的表空间中创建分区的依据也不局限于已创建的表空间中包含的分区的数目是否达到预先设定的门限值,还可以是其它任何判断方式,比如已创建的表空间的大小是否达到设定值等。
[0032]进一步的,步骤11中,在确定能够在已创建的表空间中创建分区时,可以在最近创建的表空间中创建分区。当然,也可以在其他满足条件的已创建的表空间中创建分区。
[0033]需要说明的是,步骤10与步骤11之间并没有明确的时序关系,只要满足对应步骤的执行条件就可执行对应步骤,可能是步骤10在步骤11之前执行(图1所示),也可能是步骤11在步骤10之前执行,还有可能是步骤10与步骤11并行执行。
[0034]下面结合具体实施例对本发明进行说明:
[0035]实施例一:
[0036]本实施例中,需要首先设定一个参数η,该参数η表示表空间中可创建的分区的最大个数;
[0037]如图2Α所示,定时删除表空间的具体实现流程如下:
[0038]步骤201:定时判断是否存在需要删除的分区;若是,则到步骤202,否则,到步骤205 ;
[0039]本步骤中,具体可以通过判断各分区中数据的保存时间是否超过有效期,若是,则需要删除该分区,否则,不需要删除该分区;
[0040]步骤202:删除上一步骤中判断需要删除的分区;
[0041]步骤203:判断删除的分区所在的表空间中是否不包含任何分区,若是,则到步骤204,否则,到步骤205 ;
[0042]步骤204:删除上一步骤中判断的不包含任何分区的表空间,可以在操作系统级别释放表空间占用的资源;
[0043]步骤205:确定过期数据删除结束。
[0044]如图2Β所示,定时新建表空间的具体实现流程如下:
[0045]步骤301:确定需要创建分区;
[0046]步骤302:判断是否需要创建表空间,具体可以判断最近创建的表空间中的分区的数目是否达到门限值,若是,则到步骤303,否则,到步骤304 ;
[0047]步骤303:利用可用资源创建新的表空间;
[0048]步骤304:若创建了新的表空间,则新的表空间中创建分区;否则,在已有的最近创建的表空间中创建分区,本流程结束。[0049]本实施例具有如下的优点与积极效果;
[0050]第一,采用本实施例的方法可以自动的创建新分区,删除老分区,对海量数据进行自动维护,不仅减少了数据库的日常维护工作,而且避免了人工维护差错产生的风险;
[0051]第二,本发明通过将表空间纳入到自动维护的范围中,删除分区后需要判断是否需要删除表空间,在判断需要删除表空间后删除对应的表空间,以真正的在操作系统级别释放存储空间,既避免了创建新分区的时候有可能产生的错误导致创建分区失败,也使得存储的利用率最大化。
[0052]实施例二:
[0053]为了使本【技术领域】的人员更好的理解本发明,下面以某网站的存储用户日志数据的数据库表为例对本发明作进一步的详细说明。本实施例的定时维护分区的方法中,定时创建和删除表空间,下面将详细描述该过程。该数据库表的分区键值为操作时间,每小时创建一个分区,存放该小时内的日志数据。
[0054]本实施例中,首先需要设定表空间能够存放的分区的最大个数。如,将该个数设定为100,意味着每个表空间的分区个数上限值为100,当表空间的分区个数达到该上限值之后,不能在此表空间创建新的分区。
[0055]步骤一:定时调度程序每隔一定时间判断是否存在需要删除的分区,若存在,则删除需要删除的分区;
[0056]比如,根据数据的时效性判断是否存在需要删除的分区,假定数据的时效性即保存时间是半年,则保存时间超过半年的数据所在的分区需要被删除。
[0057]步骤二:判断已删除的分区所在的表空间中是否还存在其他分区,若不存在任何分区,则删除该表空间,在操作系统级别释放该表空间占用的资源。
[0058]本步骤中,在删除完过期数据所在分区之后,查询创建时间最早的表空间中是否还存在分区,如果存在,则不进行任何操作。如果表空间中不存在任何分区,则直接删除该表空间,其数据文件也相应删除,在操作系统级别释放了存储空间。
[0059]步骤三:在需要创建新的分区时,通过计算判断是否需要创建新的表空间。
[0060]本步骤中,可以在过期数据所在的分区被删除之后,创建新的分区。查询创建时间最晚的表空间中的分区的个数是否已达到上限值100,若已经到达到,则需要创建新的表空间,若没有达到上限限值100,则获取查询创建时间最晚的表空间的名称。
[0061]步骤四:若判断不需要创建新的表空间,则在创建时间最晚的表空间(根据步骤三获得的表空间名称确定创建时间最晚的表空间)中创建新的分区;若判断需要创建表空间,则创建新的表空间,新创建的表空间的名称可以按照时间命名,然后在该表空间中创建新的分区。
[0062]实验证明,本实施例的方法能自动对采用Range分区存储的海量数据进行维护,且定时调度程序运行一年未发生任何故障,给数据库维护系统带来了极大的方便。
[0063]参见图3,本发明实施例提供一种数据库的分区维护装置,该装置包括:
[0064]删除单元30,用于在已创建的表空间中不包含任何分区时,删除所述表空间以释放所述表空间占用的资源;
[0065]创建单元31,用于在需要创建分区时,确定是否能够在已创建的表空间中创建分区,在确定为否时,利用当前可用资源创建新的表空间,并在新的表空间中创建分区。[0066]进一步的,所述删除单元30具体用于:
[0067]在删除已有分区后,确定删除的分区所在的表空间中是否不包含任何分区,在确定为是时,删除该表空间以释放该表空间占用的资源;或者,
[0068]定时确定是否存在不包含任何分区的表空间,在确定为是时,删除不包含任何分区的表空间以释放该表空间占用的资源。
[0069]进一步的,所述创建单元31具体用于:
[0070]在删除已有分区后,需要创建分区;或者,根据预先设置的分区创建触发信息确定需要创建分区。
[0071]进一步的,所述创建单元31具体用于:
[0072]判断最近创建的表空间中包含的分区的数目是否达到预先设定的门限值,若是,则确定不能够在已创建的表空间中创建分区,否则,确定能够在已创建的表空间中创建分区。
[0073]进一步的,所述创建单元31还用于:
[0074]在确定能够在已创建的表空间中创建分区时,在最近创建的表空间中创建分区。
[0075]综上,本发明的有益效果包括:
[0076]本发明实施例提供的方案中,在已创建的表空间中不包含任何分区时,删除该表空间以释放该表空间占用的资源,在需要创建分区但不能够在已有的表空间中创建分区时,利用当前可用资源创建新的表空间,并在新的表空间中创建分区,从而避免了在已有的表空间中无法创建新的分区导致分区创建失败的问题。
[0077]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0078]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0079]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0080]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0081]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种数据库的分区维护方法,其特征在于,该方法包括: 在已创建的表空间中不包含任何分区时,删除所述表空间以释放所述表空间占用的资源; 在需要创建分区时,确定是否能够在已创建的表空间中创建分区,在确定为否时,利用当前可用资源创建新的表空间,并在新的表空间中创建分区。
2.如权利要求1所述方法,其特征在于,所述在已创建的表空间中不包含任何分区时,删除所述表空间以释放所述表空间占用的资源,具体包括: 在删除已有分区后,确定删除的分区所在的表空间中是否不包含任何分区,在确定为是时,删除该表空间以释放该表空间占用的资源;或者, 定时确定是否存在不包含任何分区的表空间,在确定为是时,删除不包含任何分区的表空间以释放该表空间占用的资源。
3.如权利要求1所述方法,其特征在于,在删除已有分区后,需要创建分区;或者,根据预先设置的分区创建触发信息确定需要创建分区。
4.如权利要求1所述方法,其特征在于,所述确定是否能够在已创建的表空间中创建分区,具体包括: 判断最近创建的表空间中包含的分区的数目是否达到预先设定的门限值,若是,则确定不能够在已创建的表空间中创建分区,否则,确定能够在已创建的表空间中创建分区。
5.如权利要求1-4中任一所述方法,其特征在于,在确定能够在已创建的表空间中创建分区时,进一步包括: 在最近创建的表空间中创建分区。
6.一种数据库的分区维护装置,其特征在于,该装置包括: 删除单元,用于在已创建的表空间中不包含任何分区时,删除所述表空间以释放所述表空间占用的资源; 创建单元,用于在需要创建分区时,确定是否能够在已创建的表空间中创建分区,在确定为否时,利用当前可用资源创建新的表空间,并在新的表空间中创建分区。
7.如权利要求6所述装置,其特征在于,所述删除单元具体用于: 在删除已有分区后,确定删除的分区所在的表空间中是否不包含任何分区,在确定为是时,删除该表空间以释放该表空间占用的资源;或者, 定时确定是否存在不包含任何分区的表空间,在确定为是时,删除不包含任何分区的表空间以释放该表空间占用的资源。
8.如权利要求6所述装置,其特征在于,所述创建单元具体用于: 在删除已有分区后,需要创建分区;或者,根据预先设置的分区创建触发信息确定需要创建分区。
9.如权利要求6所述装置,其特征在于,所述创建单元具体用于: 判断最近创建的表空间中包含的分区的数目是否达到预先设定的门限值,若是,则确定不能够在已创建的表空间中创建分区,否则,确定能够在已创建的表空间中创建分区。
10.如权利要求6-9中任一所述装置,其特征在于,所述创建单元还用于: 在确定能够在已创建的表空间中创建分区时,在最近创建的表空间中创建分区。
【文档编号】G06F17/30GK103544302SQ201310533292
【公开日】2014年1月29日 申请日期:2013年10月31日 优先权日:2013年10月31日
【发明者】刘金晶 申请人:北京锐安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1