基于智能配网系统的数据库分区技术研究

时间:2022-09-30 09:45:05

基于智能配网系统的数据库分区技术研究

摘 要:智能电网的快捷发展使得配网数据极速增长,智能配网系统运行压力加大,如何够满足用户的访问响应成为当前急需解决的问题。探讨了数据库分区技术,实现了智能配网系统数据库分区策略。

关键词:智能电网;数据库分区技术;分区策略

中图分类号:TP392

文献标识码:A 文章编号:1672-7800(2015)005-0135-02

作者简介:安中印(1983-),男,安徽五河人,硕士,中南民族大学现代教育中心助理实验师,研究方向为数据挖掘、信息化校园;张嫣(1982―),女,江苏扬州人,硕士,中南民族大学计算机科学学院讲师,研究方向为数据挖掘、智能算法。

0 引言

随着智能化配电网的发展,配电终端具备了自动采集和远程上传数据的功能,采集频率可达到秒级,上传周期通常为每分钟1次。配网终端主要有以下4种:TTU、FTU、DCU和DTU。对于普通规模配网区域,各类终端的数量大约为1 000台,每天产生的数据量约为600万条。随着系统运行,配电终端的运行数据不断积累形成海量数据。本文通过ORACLE数据库分区技术对海量数据进行管理,对提高系统访问响应速度、稳定性、用户满意度有重要意义。

1 Oracle分区技术

1.1 定义

Oracle 分区技术于1997 年在Oracle8.0 中首次引入,它是Oracle 数据库最重要的功能之一,可以提高应用程序的性能、可管理性和可用性。利用Oracle 分区技术,可以很好地解决数据集中带来的性能问题,并且在逻辑上是透明的,最终用户感觉不到分区的存在[1]。

Oracle 分区(Partitioning Option)是一种处理超大型数据表的技术,是一种“分而治之”的技术,它将大表和索引分成可以管理的小块,无需对每个表视为一个大的、单独的对象进行管理,从而提供了可伸缩性能。通过分区将操作分配给更小的存储单元,节省了操作管理时间,并通过增强的并行处理提高性能,通过屏蔽故障数据分区增强可用性[2]。

1.2 Oracle 分区类型

Oracle 分区主要有4种类型:范围分区、哈希分区、列表分区和组合分区。具体如下:①范围分区。将数据基于范围映射到每一个分区,此范围由创建分区时指定的分区键决定的。这种分区方式最为常用,并且分区键经常采用日期;②hash分区。对于无法有效划分范围的表,可以使用hash分区,对提高性能有一定帮助。hash分区将表中的数据平均分配到指定的分区中,依据分区列的hash值自动分配,用户不能控制也不知道记录会被放到哪个分区中,hash分区可以支持多个依赖列;③列表分区。List分区需要明确指定列的值,该分区列只能有一个,不像range或hash分区可以同时指定多个列作为分区依赖列,但其单个分区对应值可以是多个;④组合分区。如果某表按照某列分区后仍较大,可以采用在分区内再建子分区的方式,即为组合分区[3-4]。上述分区类型优缺点比较如表1所示。

2 Oracle分区意义

(1)提高查询效率。对于全表扫描,如查找某年度所有电力终端上报数据,Oracle需要在整张大表上进行逐条扫描,如果该表按年度进行了分区,通过分区裁减功能(无需手动选择,数据库会智能使用)Oracle只对该年度的分区段进行扫描。

(2)降低数据维护成本。智能配网系统数据库中通常保存近3年配电网历史运行数据,过期历史数据需要作清除处理。传统DELETE操作不仅效率低,并且会产生大量碎片与日志记录,若回滚段设置不当,会导致宕机。如按年度分区,通过简单的命令“alter table drop partition ”,即可完成清理(仅修改数据字典),并不产生碎片,更不会因此而宕机。

(3)提高数据可用性。一般情况下,一张大表只能作为一个段放在一个表空间中。当出现物理或逻辑坏块时,整张大表都不可访问。在分区情况下,由于每个分区作为一个段,有独立的物理属性,坏块出现只会影响其所在分区,其它分区数据依然可以正常访问。

3 智能配网系统数据库分区策略

3.1 建立分区表

配网数据时间分布特点比较明显,范围分区是最合适的分区方式。可对电压、电流数据表按照时间字段进行范围分区。

建立分区后,通过测试语句select ge.deviceid,ge.devicetype,ge.sdate,ge.stime from t_gis_his_electric ge,t_gis_his_voltage gv where ge.sdate='2011-03-16' and gv.sdate='2011-03-16'and gv.deviceid=ge.deviceid,分区前后电压电流表连接查询性能对比如表2所示。可以看出,建立分区后,数据库查询时间从31.51s增加到40.02s,数据请求总数在回滚段Buffer中的数据一致性读取数(consistent gets)以及物理读取数(physical reads)都有所增加,表明建立分区表后,数据库查询性能不但没有提高反而降低了。进一步分析可知,导致表分区后性能降低的主要原因为只对表作了分区而索引没作分区。大多情况下,特别是OLPT系统通常用索引访问数据库,如果索引没有分区,索引树的高度不会降低,与未分区表索引毫无区别,而管理对象由一个表对象变为多个分区对象,造成访问性能不仅无提高反而下降。

3.2 建立局部前缀分区索引

3.2.1 普通索引与局部前缀分区索引的区别

假设表A是一个范围分区的分区表,普通索引和局部前缀分区索引(简称分区索引)与分区表之间的关系分别如图1、图2所示。通过图1、图2可以看出,普通索引是以分区表为基础,而分区索引是以分区表的具体分区为基础。当需要查询的数据在某个分区内时,只需扫描某个分区的分区索引即可,查询性能大幅提高。

3.2.2 分区索引特点及使用场合

建立索引可以在查询时只扫描相关的分区,不扫描无关记录数据。对某个分区进行删除或合并操作后,oracle自动对所对应的索引分区进行相同的操作,整个分区索引依然有效,不需要进行重建操作,可保障索引的可用性。

建立索引有其局限性,只能对分区字段建立索引。对于复合索引需将分区字段作为前缀。如果表分区字段正好是索引字段或者是其前缀,则应建立分区索引。

3.2.3 分区索引的建立

表分区后,如未建立合适的分区索引会导致数据库查询性能降低,为解决此问题,需要在分区表上建立分区索引。以电压、电流表为例创建索引,创建方式如下:

create index T_POWER_IDX on T_GIS_HIS_ELECTRIC(tdate) local;

create index T_POWER_IDX on T_GIS_HIS_VOLTAGE(tdate) local;

建立分区索引后,执行3.1章节中的测试语句,执行结果统计信息如表3所示。

表2表明,在分区表上建立分区索引后,测试SQL语句的执行时间大幅缩短,同时consistent gets、physical reads两个统计指标也大幅下降。对海量数据表采用合适的分区,同时建立配套的分区索引,可以大幅缩短数据库响应时间,提升用户体验。

4 结语

本文以智能配网系统为研究对象,分析配电网络运行数据特点,通过实验分析得出,ORACLE范围分区技术是建立智能配网系统分区表最合适的技术。通过ORACLE范围分区,同时建立分区索引,能大幅提高智能配网系统数据库访问性能,缩短数据库响应时间,对提供用户满意度有十分重要的意义。

参考文献:

[1] 王时绘,李正君. Oracle分区技术研究及实现[J]. 科技广场,2011(9):86-89.

[2] 罗敏.品悟Oracle性能优化[M]. 北京:清华大学出版社,2011.

[3] Thomas Kyte.Oracle9i&10g编程艺术深入数据库体系结构[M].北京:人民邮电出版社,2006.

[4] 张文D,项连志,王小芳. 大数据分区管理模型及其应用研究[J]. 哈尔滨工程大学学报,2014,32(6):465-468.

上一篇:基于DIV+CSS的装备管理系统网页实现 下一篇:基于SQL语句的通用数据交换方法研究与应用