CN106383897B - 数据库容量计算方法和装置 - Google Patents
数据库容量计算方法和装置 Download PDFInfo
- Publication number
- CN106383897B CN106383897B CN201610859826.2A CN201610859826A CN106383897B CN 106383897 B CN106383897 B CN 106383897B CN 201610859826 A CN201610859826 A CN 201610859826A CN 106383897 B CN106383897 B CN 106383897B
- Authority
- CN
- China
- Prior art keywords
- filing
- capacity
- data
- data block
- object library
- 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/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/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/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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明涉及一种数据库容量计算方法和装置。上述方法包括:获取目标库的归档配置数据;根据所述归档配置数据获取所述目标库中与所述归档配置数据匹配的归档表,并生成配置信息表;根据所述配置信息表确定所述归档表的原容量;分析所述归档表,并获取所述归档表中各个数据块的空闲度;根据所述各个数据块的空闲度及所述归档表的原容量计算所述归档表的实际容量。上述数据库容量计算方法和装置,能够准确计算得到每个归档表的实际容量大小,从而准确得到数据库进行归档后的实际容量。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种数据库容量计算方法和装置。
背景技术
数据库归档,指的是将数据库中某些比较不常用的数据放置到诸如磁带等大容量而不便于访问的设备。数据库的表中的数据被归档后,被归档的数据原来占用的容量即可重新被使用,因此,往往需要重新计算数据库归档后的容量方便进行数据存储。而在传统方式中,进行数据库归档工作后,计算数据库归档后的容量仅从存储、表空间、表大小等维度进行量化。然而,这三个层面均忽视了表被归档后,数据删除而尚未被回收的空间,因此无法准确地计算出数据库归档后的实际容量,计算粒度过粗,导致统计得到的数据与实际情况出入较大。
发明内容
基于此,有必要提供一种数据库容量计算方法,能准确计算数据库进行归档后各个归档表的实际容量。
此外,还有必要提供一种数据库容量计算装置,能准确计算数据库归档后各个归档表的实际容量。
一种数据库容量计算方法,包括:
获取目标库的归档配置数据;
根据所述归档配置数据获取所述目标库中与所述归档配置数据匹配的归档表,并生成配置信息表;
根据所述配置信息表确定所述归档表的原容量;
分析所述归档表,并获取所述归档表中各个数据块的空闲度;
根据所述各个数据块的空闲度及所述归档表的原容量计算所述归档表的实际容量。
在其中一个实施例中,所述获取目标库的归档配置数据,还包括:
获取待计算的目标库及目标库信息;
根据所述目标库信息从配置库中提取匹配的归档配置数据,并根据所述归档配置数据生成SQL脚本;
根据所述SQL脚本将所述归档配置数据导入所述目标库中。
在其中一个实施例中,所述分析所述归档表,并获取所述归档表中各个数据块的空闲度,包括:
分析所述归档表,得到所述归档表的高水位线;
根据所述高水位线获取所述归档表中已被使用的数据块;
逐一扫描所述已被使用的数据块,并获取各个已被使用的数据块的空闲度。
在其中一个实施例中,所述根据所述各个数据块的空闲度及所述归档表的原容量计算所述归档表的实际容量,包括:
根据预设的各个空闲度阶段对应的空闲度阶段值及所述各个已被使用的数据块的空闲度,将所述各个已被使用的数据块分配到对应的空闲度阶段;
获取被分配到所述各个空闲度阶段的数据块数量;
通过加权算法对所述各个空闲度阶段对应的空闲度阶段值及数据块数量进行计算,得到所述各个空闲度阶段的加权空闲数据块数量;
获取所述归档表的数据块容量,根据所述数据块容量及所述各个空闲度阶段的加权空闲数据块数量计算归档容量;
根据所述原容量及所述归档容量计算所述归档表的实际容量。
在其中一个实施例中,所述方法还包括:
获取所述目标库的原全库容量;
统计所述目标库中各个归档表的归档容量,得到所述目标库的总归档容量;
根据所述总归档容量及所述原全库容量计算实际归档率。
一种数据库容量计算装置,包括:
数据获取模块,用于获取目标库的归档配置数据;
生成模块,用于根据所述归档配置数据获取所述目标库中与所述归档配置数据匹配的归档表,并生成配置信息表;
确定模块,用于根据所述配置信息表确定所述归档表的原容量;
分析模块,用于分析所述归档表,并获取所述归档表中各个数据块的空闲度;
计算模块,用于根据所述各个数据块的空闲度及所述归档表的原容量计算所述归档表的实际容量。
在其中一个实施例中,所述数据获取模块,包括:
信息获取单元,用于获取待计算的目标库及目标库信息;
脚本生成单元,用于根据所述目标库信息从配置库中提取匹配的归档配置数据,并根据所述归档配置数据生成SQL脚本;
导入单元,用于根据所述SQL脚本将所述归档配置数据导入所述目标库中。
在其中一个实施例中,所述分析模块,包括:
分析单元,用于分析所述归档表,得到所述归档表的高水位线;
数据块获取单元,用于根据所述高水位线获取所述归档表中已被使用的数据块;
空闲度获取单元,用于逐一扫描所述已被使用的数据块,并获取各个已被使用的数据块的空闲度。
在其中一个实施例中,所述计算模块,包括:
分配单元,用于根据预设的各个空闲度阶段对应的空闲度阶段值及所述各个已被使用的数据块的空闲度,将所述各个已被使用的数据块分配到对应的空闲度阶段;
数量获取单元,用于获取被分配到所述各个空闲度阶段的数据块数量;
计算单元,用于通过加权算法对所述各个空闲度阶段对应的空闲度阶段值及数据块数量进行计算,得到所述各个空闲度阶段的加权空闲数据块数量;
所述计算单元,还用于获取所述归档表的数据块容量,根据所述数据块容量及所述各个空闲度阶段的加权空闲数据块数量计算归档容量;
所述计算单元,还用于根据所述原容量及所述归档容量计算所述归档表的实际容量。
在其中一个实施例中,所述装置还包括:
容量获取模块,用于获取所述目标库的原全库容量;
统计模块,用于统计所述目标库中各个归档表的归档容量,得到所述目标库的总归档容量;
所述计算模块,还用于根据所述总归档容量及所述原全库容量计算实际归档率。
上述数据库容量计算方法和装置,通过获取目标库的归档配置数据,根据归档配置数据生成配置信息表,根据配置信息表确定目标库中的归档表的原容量,分析归档表,并获取归档表中各个数据块的空闲度,再根据各个数据块的空闲及归档表的原容量计算归档表的实际容量,使得数据库的真实容量计算能细粒度到数据块层面,根据各个数据块的空闲度能够准确计算得到每个归档表的实际容量大小,从而准确得到数据库进行归档后的实际容量。
附图说明
图1为一个实施例中服务器的内部结构示意图;
图2为一个实施例中数据库容量计算方法的流程示意图;
图3为一个实施例中获取目标库的归档配置数据的流程示意图;
图4为一个实施例中分析归档表,并获取归档表中各个数据块的空闲度的流程示意图;
图5为一个实施例中计算归档表的实际容量的流程示意图;
图6为一个实施例中计算目标库的实际归档率的流程示意图;
图7为一个实施例中数据库容量计算装置的结构示意图;
图8为一个实施例中数据获取模块的内部结构示意图;
图9为一个实施例中分析模块的内部结构示意图;
图10为一个实施例中计算模块的内部结构示意图;
图11为另一个实施例中数据库容量计算装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中服务器的内部结构示意图。如图1所示,该服务器包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该服务器的非易失性存储介质存储有操作系统、数据库和数据库容量计算装置,数据库中存储有归档表,该数据库容量计算装置用于实现适用于服务器的一种数据库容量计算方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存储器为非易失性存储介质中的数据库容量计算装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行数据库容量计算方法。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的数据归档请求等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
如图2所示,提供了一种数据库容量计算方法,包括以下步骤:
步骤S210,获取目标库的归档配置数据。
具体的,目标库指的是待统计进行归档工作后的实际容量的目标数据库,归档配置数据中记录有目标库进行归档的归档表信息,服务器从目标库的归档配置数据中可清楚地获取目标库进行归档的归档表及归档表信息。
如图3所示,在一个实施例中,步骤S110获取目标库的归档配置数据,包括以下步骤:
步骤S302,获取待计算的目标库及目标库信息。
具体的,可获取目标库的目标库信息,目标库信息可包括目标库编号、目标库名称、目标库中存储的各个表的表名等信息。
步骤S304,根据目标库信息从配置库中提取匹配的归档配置数据,并根据归档配置数据生成SQL脚本。
具体的,配置库中存储有各个数据库的相关配置信息,包括各个数据库的归档配置数据、业务配置数据等,其中,业务配置数据可包括数据库存储的表对应的业务类型、数据库各个表的主键、字段等。可根据目标库信息中的目标库编号或是目标库名称等,从配置库中查找并提取与目标库信息匹配的归档配置数据,并导出归档配置数据生成SQL(Structured Query Language,结构化查询语言)脚本,方便将归档配置数据从配置库中传递至目标库。
步骤S306,根据SQL脚本将归档配置数据导入目标库中。
具体的,可根据生成的SQL脚本将与目标库的目标库信息匹配的归档配置数据导入目标库中,即可成功提取目标库中进行归档的归档表的相关信息。
步骤S220,根据归档配置数据获取目标库中与归档配置数据匹配的归档表,并生成配置信息表。
具体的,将归档配置数据导入目标库后,即可根据归档配置数据获取目标库中进行归档的归档表及归档表信息,并根据归档表信息生成配置信息表,配置信息表中可包括归档表表名、归档表属主、与归档表关联的主表表名、主表属主等信息,其中,属主指的是创建该表的用户,即表所属的主人。
步骤S230,根据配置信息表确定归档表的原容量。
具体的,可按照配置信息表中的归档表表名,逐一对目标库中的归档表计算归档后的实际容量,可使用DBA_SEGMENTS函数获取归档表所占的物理空间大小,即归档表的原容量。
步骤S240,分析归档表,并获取归档表中各个数据块的空闲度。
具体的,数据库的逻辑结构包括表空间、段、区及数据块,一个数据库由多个表空间组成,表空间中存储的对象称为段,例如数据段、索引段等,段由区组成,区是磁盘分配的最小单位。区的大小是数据块大小的整数倍,数据块是数据库中最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。在确定了归档表的原容量后,可对归档表进行分析,通过show_space函数扫描归档表中的各个数据块,并获取各个数据块的空闲度,空闲度即数据块未被占用的容量占数据块容量大小的比率。
步骤S250,根据各个数据块的空闲度及归档表的原容量计算归档表的实际容量。
具体的,可根据归档表的BLOCK_SIZE参数获取数据块的容量大小,并根据归档表中各个数据块的空闲度计算出归档表的归档容量,其中,归档容量指的是表中数据被归档后空出的容量,即数据被归档后可重新使用的容量。计算出归档表的归档容量后,可将归档表的原容量减去归档容量,即可得到归档表的实际容量。按照配置信息表中的归档表表名逐一计算目标库的各个归档表的实际容量后,即可将各个归档表的实际容量与其它未进行归档的表的容量进行相加,得到数据库进行归档后的实际容量。
上述数据库容量计算方法,通过获取目标库的归档配置数据,根据归档配置数据生成配置信息表,根据配置信息表确定目标库中的归档表的原容量,分析归档表,并获取归档表中各个数据块的空闲度,再根据各个数据块的空闲及归档表的原容量计算归档表的实际容量,使得数据库的真实容量计算能细粒度到数据块层面,根据各个数据块的空闲度能够准确计算得到每个归档表的实际容量大小,从而准确得到数据库进行归档后的实际容量。
如图4所示,在一个实施例中,步骤S240分析归档表,并获取归档表中各个数据块的空闲度,包括以下步骤:
步骤S402,分析归档表,得到归档表的高水位线。
具体的,高水位线(HWM,High-Water Mark)用于界定归档表的一个段中已被使用的数据块及未被使用的数据块,高水位线下为已被使用的数据块,高水位线上为已分配但未使用的数据块。当在表中新增数据时,高水位线会随着数据存储的空间不足而往上移,但当归档表中的数据被归档,相当于将归档的数据进行删除时,高水位线并不会随着数据块中的数据被删除而降低,因此,需要获取归档表的高水位线,从而得到归档表中的各个段中已被使用的数据块。
步骤S404,根据高水位线获取归档表中已被使用的数据块。
具体的,可根据归档表的高水位线获取归档表中已被使用的数据块及未被使用的数据块,并获取已被使用的数据块的归档容量,即获取已被使用的数据块因数据归档从而空出来可重新写入数据的容量。还可根据高水位线获取未被使用的数据块数量,并根据归档表的BLOCK_SIZE参数定义的数据块容量大小计算归档表已分配但未使用的容量。
步骤S406,逐一扫描已被使用的数据块,并获取各个已被使用的数据块的空闲度。
具体的,可通过show_space函数逐一扫描归档表中已被使用的数据块,并分别获取已被使用的数据块的空闲度,从而根据归档表中各个数据块的空闲度计算出归档表的归档容量。
在本实施例中,根据归档表的高水位线获取已被使用的数据块,并获取各个已被使用的数据块的空闲度从而精准地计算出归档表的归档容量,使得归档表的实际容量计算能细粒度到数据块层面,在计算归档表的实际容量时能去除高水位线下的空出的容量,能够准确计算得到每个归档表的实际容量大小。
如图5所示,在一个实施例中,步骤S250根据各个数据块的空闲度及归档表的原容量计算归档表的实际容量,包括以下步骤:
步骤S502,根据预设的各个空闲度阶段对应的空闲度阶段值及各个已被使用的数据块的空闲度,将各个已被使用的数据块分配到对应的空闲度阶段。
具体的,可预先根据业务需求设置各个空闲度阶段,例如,可分别设置0-25%、25%-50%、50%-75%、75%-100%、100%等5个空闲度阶段。每个空闲度阶段对应一个空闲度数值区间,空闲度阶段值即为各个空闲度阶段的最大值、最小值,每个空闲度阶段对应的空闲度数值区间可大于或等于最小值,小于最大值,但并不限于此。通过show_space函数扫描归档表中已被使用的数据块,可获取已被使用的数据块的空闲度,将获取的已被使用的数据块的空闲度与各个空闲度阶段的空闲度阶段值进行比对,判断该已被使用的数据块的空闲度落入哪一个空闲度数值区间,从而对已被使用的数据块进行分配。例如,某已被使用的数据块的空闲度为30%,进行比对后,可知其落入25%-50%这一空闲度数值区间,则将该已被使用的数据块分配至25%-50%的空闲度阶段。
步骤S504,获取被分配到各个空闲度阶段的数据块数量。
具体的,逐一根据归档表中各个已被使用的数据块的空闲度,将各个已被使用的数据块分配到对应的空闲度阶段后,可获取被分配到各个空闲度阶段的数据块数量。
步骤S506,通过加权算法对各个空闲度阶段对应的空闲度阶段值及数据块数量进行计算,得到各个空闲度阶段的加权空闲数据块数量。
具体的,因各个空闲度阶段对应的为空闲度数值区间,因此,需要对各个空闲度阶段对应的空闲度阶段值及数据块数量进行加权计算,从而获取归档表中已被使用的数据块的空闲度分布结构。例如,假设归档表中,分配到0-25%、25%-50%、50%-75%、75%-100%、100%等5个空闲度阶段的数据块数量分别为a、b、c、d、e,则可计算得到各个空闲度阶段的加权空闲数据块数量分别为a*(0+25%)/2、b*(25%+50%)/2、c*(50%+75%)/2、d*(75%+100%)/2、e*100%。
步骤S508,获取归档表的数据块容量,根据数据块容量及各个空闲度阶段的加权空闲数据块数量计算归档容量。
具体的,可根据归档表的BLOCK_SIZE参数获取归档表的数据块容量大小,并将数据块容量与各个空闲度阶段的加权空闲数据块数量之和相乘,即可得到归档表的归档容量,即归档容量=归档容量*各个空闲度阶段的加权空闲数据块数量之和。
步骤S510,根据原容量及归档容量计算归档表的实际容量。
具体的,可根据获取的归档表的原容量、归档表中已分配但未使用的容量及归档容量等数据计算归档表的实际容量,归档表的实际容量=原容量-已分配但未使用的容量-归档容量。
在本实施例中,将归档表中已被使用的数据块按照空闲度分配至各个空闲度阶段,并计算各个空闲度阶段的加权空闲数据块数量,从而使得计算出的归档表的归档容量更加准确,能够准确计算得到每个归档表的实际容量大小。
如图6所示,在一个实施例中,上述数据库容量计算方法,还包括以下步骤:
步骤S602,获取目标库的原全库容量。
具体的,可从数据库记录表中提取与目标库对应的数据,并获取目标库的原全库容量,其中,原全库容量指的是数据库未进行数据归档前所占的物理空间大小。
步骤S604,统计目标库中各个归档表的归档容量,得到目标库的总归档容量。
具体的,计算得到目标库中各个归档表的归档容量后,可对各个归档表的归档容量进行统计,得到目标库的总归档容量。
步骤S606,根据总归档容量及原全库容量计算实际归档率。
具体的,实际归档率指的是已归档的数据占原来全部数据的比率,目标库的实际归档率=总归档容量/原全库容量。在其它的实施例中,可每隔预设时间,例如每日、每月等,收集目标库各个归档表的归档时间、归档容量、实际容量、目标库的总归档容量、实际归档率等数据,并生成报表,方便工作人员对数据库中的归档范围及实际归档率等进行察看调整。
在本实施例中,可根据准确计算得到的归档表的归档容量计算目标库的实际归档率,使实际归档率的计算更加精准,能帮助工作人员更加准确地分析数据库的归档工作。
如图7所示,提供了一种数据库容量计算装置,包括数据获取模块710、生成模块720、确定模块730、分析模块740及计算模块750。
数据获取模块710,用于获取目标库的归档配置数据。
具体的,目标库指的是待统计进行归档工作后的实际容量的目标数据库,归档配置数据中记录有目标库进行归档的归档表信息,服务器从目标库的归档配置数据中可清楚地获取目标库进行归档的归档表及归档表信息。
如图8所示,在一个实施例中,数据获取模块710包括信息获取单元712、脚本生成单元714和导入单元716。
信息获取单元712,用于获取待计算的目标库及目标库信息。
具体的,可获取目标库的目标库信息,目标库信息可包括目标库编号、目标库名称、目标库中存储的各个表的表名等信息。
脚本生成单元714,用于根据目标库信息从配置库中提取匹配的归档配置数据,并根据归档配置数据生成SQL脚本。
具体的,配置库中存储有各个数据库的相关配置信息,包括各个数据库的归档配置数据、业务配置数据等,其中,业务配置数据可包括数据库存储的表对应的业务类型、数据库各个表的主键、字段等。可根据目标库信息中的目标库编号或是目标库名称等,从配置库中查找并提取与目标库信息匹配的归档配置数据,并导出归档配置数据生成SQL脚本,方便将归档配置数据从配置库中传递至目标库。
导入单元716,用于根据SQL脚本将归档配置数据导入目标库中。
具体的,可根据生成的SQL脚本将与目标库的目标库信息匹配的归档配置数据导入目标库中,即可成功提取目标库中进行归档的归档表的相关信息。
生成模块720,用于根据归档配置数据获取目标库中与归档配置数据匹配的归档表,并生成配置信息表。
具体的,将归档配置数据导入目标库后,即可根据归档配置数据获取目标库中进行归档的归档表及归档表信息,并根据归档表信息生成配置信息表,配置信息表中可包括归档表表名、归档表属主、与归档表关联的主表表名、主表属主等信息,其中,属主指的是创建该表的用户,即表所属的主人。
确定模块730,用于根据配置信息表确定归档表的原容量。
具体的,可按照配置信息表中的归档表表名,逐一对目标库中的归档表计算归档后的实际容量,可使用DBA_SEGMENTS函数获取归档表所占的物理空间大小,即归档表的原容量。
分析模块740,用于分析归档表,并获取归档表中各个数据块的空闲度。
具体的,数据库的逻辑结构包括表空间、段、区及数据块,一个数据库由多个表空间组成,表空间中存储的对象称为段,例如数据段、索引段等,段由区组成,区是磁盘分配的最小单位。区的大小是数据块大小的整数倍,数据块是数据库中最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。在确定了归档表的原容量后,可对归档表进行分析,通过show_space函数扫描归档表中的各个数据块,并获取各个数据块的空闲度,空闲度即数据块未被占用的容量占数据块容量大小的比率。
计算模块750,用于根据各个数据块的空闲度及归档表的原容量计算归档表的实际容量。
具体的,可根据归档表的BLOCK_SIZE参数获取数据块的容量大小,并根据归档表中各个数据块的空闲度计算出归档表的归档容量,其中,归档容量指的是表中数据被归档后空出的容量,即数据被归档后可重新使用的容量。计算出归档表的归档容量后,可将归档表的原容量减去归档容量,即可得到归档表的实际容量。按照配置信息表中的归档表表名逐一计算目标库的各个归档表的实际容量后,即可将各个归档表的实际容量与其它未进行归档的表的容量进行相加,得到数据库进行归档后的实际容量。
上述数据库容量计算装置,通过获取目标库的归档配置数据,根据归档配置数据生成配置信息表,根据配置信息表确定目标库中的归档表的原容量,分析归档表,并获取归档表中各个数据块的空闲度,再根据各个数据块的空闲及归档表的原容量计算归档表的实际容量,使得数据库的真实容量计算能细粒度到数据块层面,根据各个数据块的空闲度能够准确计算得到每个归档表的实际容量大小,从而准确得到数据库进行归档后的实际容量。
如图9所示,在一个实施例中,分析模块740包括分析单元742、数据块获取单元744及空闲度获取单元746。
分析单元742,用于分析归档表,得到归档表的高水位线。
具体的,高水位线用于界定归档表的一个段中已被使用的数据块及未被使用的数据块,高水位线下为已被使用的数据块,高水位线上为已分配但未使用的数据块。当在表中新增数据时,高水位线会随着数据存储的空间不足而往上移,但当归档表中的数据被归档,相当于将归档的数据进行删除时,高水位线并不会随着数据块中的数据被删除而降低,因此,需要获取归档表的高水位线,从而得到归档表中的各个段中已被使用的数据块。
数据块获取单元744,用于根据高水位线获取归档表中已被使用的数据块。
具体的,可根据归档表的高水位线获取归档表中已被使用的数据块及未被使用的数据块,并获取已被使用的数据块的归档容量,即获取已被使用的数据块因数据归档从而空出来可重新写入数据的容量。还可根据高水位线获取未被使用的数据块数量,并根据归档表的BLOCK_SIZE参数定义的数据块容量大小计算归档表已分配但未使用的容量。
空闲度获取单元746,用于逐一扫描已被使用的数据块,并获取各个已被使用的数据块的空闲度。
具体的,可通过show_space函数逐一扫描归档表中已被使用的数据块,并分别获取已被使用的数据块的空闲度,从而根据归档表中各个数据块的空闲度计算出归档表的归档容量。
在本实施例中,根据归档表的高水位线获取已被使用的数据块,并获取各个已被使用的数据块的空闲度从而精准地计算出归档表的归档容量,使得归档表的实际容量计算能细粒度到数据块层面,在计算归档表的实际容量时能去除高水位线下的空出的容量,能够准确计算得到每个归档表的实际容量大小。
如图10所示,在一个实施例中,计算模块750包括分配单元752、数量获取单元754及计算单元756。
分配单元752,用于根据预设的各个空闲度阶段对应的空闲度阶段值及各个已被使用的数据块的空闲度,将各个已被使用的数据块分配到对应的空闲度阶段。
具体的,可预先根据业务需求设置各个空闲度阶段,例如,可分别设置0-25%、25%-50%、50%-75%、75%-100%、100%等5个空闲度阶段。每个空闲度阶段对应一个空闲度数值区间,空闲度阶段值即为各个空闲度阶段的最大值、最小值,每个空闲度阶段对应的空闲度数值区间可大于或等于最小值,小于最大值,但并不限于此。通过show_space函数扫描归档表中已被使用的数据块,可获取已被使用的数据块的空闲度,将获取的已被使用的数据块的空闲度与各个空闲度阶段的空闲度阶段值进行比对,判断该已被使用的数据块的空闲度落入哪一个空闲度数值区间,从而对已被使用的数据块进行分配。例如,某已被使用的数据块的空闲度为30%,进行比对后,可知其落入25%-50%这一空闲度数值区间,则将该已被使用的数据块分配至25%-50%的空闲度阶段。
数量获取单元754,用于获取被分配到各个空闲度阶段的数据块数量。
具体的,逐一根据归档表中各个已被使用的数据块的空闲度,将各个已被使用的数据块分配到对应的空闲度阶段后,可获取被分配到各个空闲度阶段的数据块数量。
计算单元756,用于通过加权算法对各个空闲度阶段对应的空闲度阶段值及数据块数量进行计算,得到各个空闲度阶段的加权空闲数据块数量。
具体的,因各个空闲度阶段对应的为空闲度数值区间,因此,需要对各个空闲度阶段对应的空闲度阶段值及数据块数量进行加权计算,从而获取归档表中已被使用的数据块的空闲度分布结构。例如,假设归档表中,分配到0-25%、25%-50%、50%-75%、75%-100%、100%等5个空闲度阶段的数据块数量分别为a、b、c、d、e,则可计算得到各个空闲度阶段的加权空闲数据块数量分别为a*(0+25%)/2、b*(25%+50%)/2、c*(50%+75%)/2、d*(75%+100%)/2、e*100%。
计算单元756,还用于获取归档表的数据块容量,根据数据块容量及各个空闲度阶段的加权空闲数据块数量计算归档容量。
具体的,可根据归档表的BLOCK_SIZE参数获取归档表的数据块容量大小,并将数据块容量与各个空闲度阶段的加权空闲数据块数量之和相乘,即可得到归档表的归档容量,即归档容量=归档容量*各个空闲度阶段的加权空闲数据块数量之和。
计算单元756,还用于根据原容量及归档容量计算归档表的实际容量。
具体的,可根据获取的归档表的原容量、归档表中已分配但未使用的容量及归档容量等数据计算归档表的实际容量,归档表的实际容量=原容量-已分配但未使用的容量-归档容量。
在本实施例中,将归档表中已被使用的数据块按照空闲度分配至各个空闲度阶段,并计算各个空闲度阶段的加权空闲数据块数量,从而使得计算出的归档表的归档容量更加准确,能够准确计算得到每个归档表的实际容量大小。
如图11所示,在一个实施例中,上述数据库容量计算装置,除了包括数据获取模块710、生成模块720、确定模块730、分析模块740及计算模块750,还包括容量获取模块760及统计模块770。
容量获取模块760,用于获取目标库的原全库容量。
具体的,可从数据库记录表中提取与目标库对应的数据,并获取目标库的原全库容量,其中,原全库容量指的是数据库未进行数据归档前所占的物理空间大小。
统计模块770,用于统计目标库中各个归档表的归档容量,得到目标库的总归档容量。
具体的,计算得到目标库中各个归档表的归档容量后,可对各个归档表的归档容量进行统计,得到目标库的总归档容量。
计算模块750,还用于根据总归档容量及原全库容量计算实际归档率。
具体的,实际归档率指的是已归档的数据占原来全部数据的比率,目标库的实际归档率=总归档容量/原全库容量。在其它的实施例中,可每隔预设时间,例如每日、每月等,收集目标库各个归档表的归档时间、归档容量、实际容量、目标库的总归档容量、实际归档率等数据,并生成报表,方便工作人员对数据库中的归档范围及实际归档率等进行察看调整。
具体的,实际归档率指的是已归档的数据占原来全部数据的比率,目标库的实际归档率=总归档容量/原全库容量。在其它的实施例中,可每隔预设时间,例如每日、每月等,收集目标库各个归档表的归档时间、归档容量、实际容量、目标库的总归档容量、实际归档率等数据,并生成报表,方便工作人员对数据库中的归档范围及实际归档率等进行察看调整。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种数据库容量计算方法,包括:
获取目标库的归档配置数据;
根据所述归档配置数据获取所述目标库中与所述归档配置数据匹配的归档表,并生成配置信息表;
根据所述配置信息表确定所述归档表的原容量;
分析所述归档表,并获取所述归档表中各个数据块的空闲度;
根据所述各个数据块的空闲度及所述归档表的原容量计算所述归档表的实际容量;
所述分析所述归档表,并获取所述归档表中各个数据块的空闲度,包括:
分析所述归档表,得到所述归档表的高水位线;
根据所述高水位线获取所述归档表中已被使用的数据块;
逐一扫描所述已被使用的数据块,并获取各个已被使用的数据块的空闲度;
所述根据所述各个数据块的空闲度及所述归档表的原容量计算所述归档表的实际容量,包括:
根据预设的各个空闲度阶段对应的空闲度阶段值及所述各个已被使用的数据块的空闲度,将所述各个已被使用的数据块分配到对应的空闲度阶段;
获取被分配到所述各个空闲度阶段的数据块数量;
通过加权算法对所述各个空闲度阶段对应的空闲度阶段值及数据块数量进行计算,得到所述各个空闲度阶段的加权空闲数据块数量;
获取所述归档表的数据块容量,根据所述数据块容量及所述各个空闲度阶段的加权空闲数据块数量计算归档容量;
根据所述原容量及所述归档容量计算所述归档表的实际容量。
2.根据权利要求1所述的数据库容量计算方法,其特征在于,所述获取目标库的归档配置数据,还包括:
获取待计算的目标库及目标库信息;
根据所述目标库信息从配置库中提取匹配的归档配置数据,并根据所述归档配置数据生成SQL脚本;
根据所述SQL脚本将所述归档配置数据导入所述目标库中。
3.根据权利要求1所述的数据库容量计算方法,其特征在于,所述方法还包括:
获取所述目标库的原全库容量;
统计所述目标库中各个归档表的归档容量,得到所述目标库的总归档容量;
根据所述总归档容量及所述原全库容量计算实际归档率。
4.一种数据库容量计算装置,其特征在于,包括:
数据获取模块,用于获取目标库的归档配置数据;
生成模块,用于根据所述归档配置数据获取所述目标库中与所述归档配置数据匹配的归档表,并生成配置信息表;
确定模块,用于根据所述配置信息表确定所述归档表的原容量;
分析模块,用于分析所述归档表,并获取所述归档表中各个数据块的空闲度;
计算模块,用于根据所述各个数据块的空闲度及所述归档表的原容量计算所述归档表的实际容量;
所述分析模块,包括:
分析单元,用于分析所述归档表,得到所述归档表的高水位线;
数据块获取单元,用于根据所述高水位线获取所述归档表中已被使用的数据块;
空闲度获取单元,用于逐一扫描所述已被使用的数据块,并获取各个已被使用的数据块的空闲度;
所述计算模块,包括:
分配单元,用于根据预设的各个空闲度阶段对应的空闲度阶段值及所述各个已被使用的数据块的空闲度,将所述各个已被使用的数据块分配到对应的空闲度阶段;
数量获取单元,用于获取被分配到所述各个空闲度阶段的数据块数量;
计算单元,用于通过加权算法对所述各个空闲度阶段对应的空闲度阶段值及数据块数量进行计算,得到所述各个空闲度阶段的加权空闲数据块数量;
所述计算单元,还用于获取所述归档表的数据块容量,根据所述数据块容量及所述各个空闲度阶段的加权空闲数据块数量计算归档容量;
所述计算单元,还用于根据所述原容量及所述归档容量计算所述归档表的实际容量。
5.根据权利要求4所述的数据库容量计算装置,其特征在于,所述数据获取模块,包括:
信息获取单元,用于获取待计算的目标库及目标库信息;
脚本生成单元,用于根据所述目标库信息从配置库中提取匹配的归档配置数据,并根据所述归档配置数据生成SQL脚本;
导入单元,用于根据所述SQL脚本将所述归档配置数据导入所述目标库中。
6.根据权利要求4所述的数据库容量计算装置,其特征在于,所述装置还包括:
容量获取模块,用于获取所述目标库的原全库容量;
统计模块,用于统计所述目标库中各个归档表的归档容量,得到所述目标库的总归档容量;
所述计算模块,还用于根据所述总归档容量及所述原全库容量计算实际归档率。
7.一种服务器,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现如权利要求1至3任一所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至3任一所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610859826.2A CN106383897B (zh) | 2016-09-28 | 2016-09-28 | 数据库容量计算方法和装置 |
PCT/CN2017/085868 WO2018058983A1 (zh) | 2016-09-28 | 2017-05-25 | 数据库容量计算方法、装置、服务器及存储设备 |
TW106133063A TWI637281B (zh) | 2016-09-28 | 2017-09-27 | 資料庫容量計算方法和裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610859826.2A CN106383897B (zh) | 2016-09-28 | 2016-09-28 | 数据库容量计算方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106383897A CN106383897A (zh) | 2017-02-08 |
CN106383897B true CN106383897B (zh) | 2018-02-16 |
Family
ID=57937357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610859826.2A Active CN106383897B (zh) | 2016-09-28 | 2016-09-28 | 数据库容量计算方法和装置 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN106383897B (zh) |
TW (1) | TWI637281B (zh) |
WO (1) | WO2018058983A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106383897B (zh) * | 2016-09-28 | 2018-02-16 | 平安科技(深圳)有限公司 | 数据库容量计算方法和装置 |
CN108470045B (zh) * | 2018-03-06 | 2020-02-18 | 平安科技(深圳)有限公司 | 电子装置、数据链式归档的方法及存储介质 |
CN109885567B (zh) * | 2018-12-13 | 2024-04-02 | 平安壹钱包电子商务有限公司 | 一种存储空间扩容方法和装置 |
CN111090652B (zh) * | 2019-12-20 | 2023-05-23 | 山大地纬软件股份有限公司 | 一种可水平扩展归档数据库的数据归档方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493842A (zh) * | 2009-02-20 | 2009-07-29 | 中兴通讯股份有限公司 | Oracle数据库中大批量删除数据的方法 |
CN104699807A (zh) * | 2015-03-23 | 2015-06-10 | 上海新炬网络信息技术有限公司 | 一种oracle数据表空间的自动监控扩容方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7660959B2 (en) * | 2006-09-28 | 2010-02-09 | International Business Machines Corporation | Managing encryption for volumes in storage pools |
CN101364897A (zh) * | 2008-09-17 | 2009-02-11 | 中兴通讯股份有限公司 | 一种历史数据归档的系统与实现方法 |
US9002801B2 (en) * | 2010-03-29 | 2015-04-07 | Software Ag | Systems and/or methods for distributed data archiving amongst a plurality of networked computing devices |
TW201342052A (zh) * | 2011-12-16 | 2013-10-16 | Ibm | 磁帶機系統伺服器 |
US9275086B2 (en) * | 2012-07-20 | 2016-03-01 | Commvault Systems, Inc. | Systems and methods for database archiving |
CN103064768B (zh) * | 2013-01-25 | 2015-11-25 | 北京捷成世纪科技发展江苏有限公司 | 一种基于磁带的数据归档备份方法和系统 |
CN103761318B (zh) * | 2014-01-27 | 2017-08-18 | 中国工商银行股份有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN105808633B (zh) * | 2016-01-08 | 2019-07-23 | 平安科技(深圳)有限公司 | 数据归档方法和系统 |
CN106383897B (zh) * | 2016-09-28 | 2018-02-16 | 平安科技(深圳)有限公司 | 数据库容量计算方法和装置 |
-
2016
- 2016-09-28 CN CN201610859826.2A patent/CN106383897B/zh active Active
-
2017
- 2017-05-25 WO PCT/CN2017/085868 patent/WO2018058983A1/zh active Application Filing
- 2017-09-27 TW TW106133063A patent/TWI637281B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493842A (zh) * | 2009-02-20 | 2009-07-29 | 中兴通讯股份有限公司 | Oracle数据库中大批量删除数据的方法 |
CN104699807A (zh) * | 2015-03-23 | 2015-06-10 | 上海新炬网络信息技术有限公司 | 一种oracle数据表空间的自动监控扩容方法 |
Non-Patent Citations (1)
Title |
---|
Oracle利用HWM高水标记收缩数据空间方案;季承;《2013电力行业信息化年会论文集》;20131231;第72-74页 * |
Also Published As
Publication number | Publication date |
---|---|
TW201814559A (zh) | 2018-04-16 |
TWI637281B (zh) | 2018-10-01 |
CN106383897A (zh) | 2017-02-08 |
WO2018058983A1 (zh) | 2018-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106383897B (zh) | 数据库容量计算方法和装置 | |
CN103177061B (zh) | 分区表中的唯一值估计 | |
JP6032467B2 (ja) | 時空間データ管理システム、時空間データ管理方法、及びそのプログラム | |
CN103577440B (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
CN104361018B (zh) | 电子档案信息整编方法及装置 | |
CN103995899A (zh) | 一种kpi的分析系统 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN111414410B (zh) | 数据处理方法、装置、设备和存储介质 | |
CN112818377A (zh) | 权限数据推荐、权限设置方法及系统、电子设备及介质 | |
CN110737727B (zh) | 一种数据处理的方法及系统 | |
CN111367956B (zh) | 数据统计方法及装置 | |
CN110196858A (zh) | 一种基于Hive Mutation API进行数据更新的方法 | |
CN113297171A (zh) | 数据库迁移方法及装置、数据库集群 | |
WO2015029969A1 (ja) | データ処理装置及びデータ処理方法及びプログラム | |
CN113360551B (zh) | 一种靶场中时序数据的存储与快速统计方法及系统 | |
CN107622123A (zh) | 一种面向asm文件系统的文件解析方法 | |
CN108234596A (zh) | 航空信息推送方法及装置 | |
CN106776704A (zh) | 统计信息收集方法和装置 | |
CN114510491A (zh) | 一种动态随访量表设计方法和系统 | |
CN110990394B (zh) | 分布式面向列数据库表的行数统计方法、装置和存储介质 | |
KR102028487B1 (ko) | 문서의 토픽 모델링 장치 및 방법, 이를 기록한 기록매체 | |
CN108665221B (zh) | 业绩数据的处理方法及装置、计算机设备及可读介质 | |
CN113505172B (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN117251532B (zh) | 一种基于动态多级匹配的大规模文献机构消歧方法 | |
CN118051643A (zh) | 一种面向元数据稀疏分布的lsm数据组织方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |