基于ORACLE数据库的用户用电信息采集系统性能优化

2016-07-18 02:44王立斌郭一实潘晓君
河北电力技术 2016年3期
关键词:采集系统性能优化智能电网

赵 佩,李 翀,王立斌,郭一实,潘晓君

(1.国网河北省电力公司电力科学研究院,石家庄 050021;2.国电南瑞科技股份有限公司用电分公司,南京 210000)



基于ORACLE数据库的用户用电信息采集系统性能优化

赵佩1,李翀1,王立斌1,郭一实1,潘晓君2

(1.国网河北省电力公司电力科学研究院,石家庄050021;2.国电南瑞科技股份有限公司用电分公司,南京210000)

摘要:针对用户用电信息采集系统主站承担越来越大调试、接入和采集等方面的压力,结合系统的运行监控情况,从系统硬件配置、后台程序、数据表分析和运维人员语句编写等四方面提出系统性能优化方案,说明优化方案的效果,并给出今后系统进一步优化的建议。

关键词:智能电网;采集系统;数据库;性能优化;程序优化

1概述

用户用电信息采集系统(以下简称“采集系统”)以智能电表和通信网络为基础支撑[1],覆盖购、供、售三侧关口,对各项电气量数据进行实时精确采集,为电网运营管理提供了准确海量的数据支撑,是智能电网的核心组成部分。

随着智能电网的发展与推广,在大量用户接入的压力下,采集系统生产数据库负荷居高不下,甚至出现夯住现象,给公司正在逐步上升的用电采集业务应用及指标数据造成恶劣影响。因此,及时有效地解决采集系统瓶颈、优化采集系统性能成为保证电能准确采集、支撑调试接入应用的当务之急,而且随着采集系统的不断深化应用,数据的准确可靠与系统的安全稳定运行成为各部门管理者和应用者的共同期盼。[2]

因此,以下结合采集系统的运行监控情况,对系统日志与报告进行研究,从系统硬件配置调整、后台程序优化、数据表分析优化、规范运维人员语句编写等四方面进行分析,得出相应的系统性能优化方案。

2采集系统性能现状分析

采集系统生产数据库使用2台IBM P570小型机,每台16核处理器,内存96 GB,AIX操作系统,安装Oracle 10g数据库,双节点运行。随着智能电网的发展,近期河北省智能电能表快速接入,采集系统主站承担了越来越大的调试、接入和采集等方面的压力。以采集系统硬件配置扩容前生产库1号节点系统为例(2号节点与1号节点类似,不做展示),根据服务器记录的NMON文件,导出CPU占用情况,如图1所示。

图1 优化前生产库1号节点CPU占用情况

由图1可以看出,系统CPU占用率偶尔出现负荷突增至90%以上的情况,且当时内存使用率一直居高不下:物理内存(96 GB)持续仅剩余0.1 %,虚拟内存(38 GB)仅剩余30%~40%。物理内存紧张导致大量的虚拟内存SWAP交换,出现数据库宕机夯住现象,同时出现CPU占用增高现象。

3系统性能优化措施

3.1调整系统硬件配置

经过分析,每天接入电能表数量可达数万量级,抄表、计算数据量也随之增加,排除网络因素后可知,内存不足、参数配置低是导致性能下降的系统硬件原因,而CPU占用率高也与物理内存不足有关。故经过初步计算,提出进行系统硬件配置升级,将内存大小提升至128 GB,同时做好系统参数和内存分配的调整:系统参数maxclient调整为20%、maxperm调整为20%,session_cached_cursors调整至200;Oracle内存分配SGA从55 GB调整到70 GB。

3.2优化后台程序

省市县公司各级用户在使用采集系统过程中,会通过web页面与数据库进行交互,在AWR报告的SQL Module体现为JDBC Thin Client。

从数据库夯住前后导出的AWR报告中的SQL Statistics章节可以看出:有大量通过JDBC Thin Client连接数据库的SQL语句占用了较长的运行时间和CPU时间。整体的性能影响还与执行次数(Executions)有关,通过web页面连接数据库往往执行频率较高,而SQL语句执行的次数过多,累加起来对系统的影响同样会很大。

故对于这部分语句在分析AWR报告时,需要关注SQL Statistics中的SQL ordered by Elapsed Time和SQL ordered by CPU Time等指标,从减少运行时间的角度考虑优化方案。

3.3优化数据表分析

为数据表创建索引不仅可以保证数据的唯一性,而且可以大大加快数据的检索速度、分组和排序的时间,进而提高系统性能。[3]但是,索引创建不当也会产生不利影响,例如索引的创建和维护耗费时间和占用的空间随着数据量的增加而增加,降低系统的维护速度和增大空间需求等。根据创建索引优缺点分析,应该在以下列上创建索引。

a. 在经常需要搜索的列上,可以加快搜索的速度;

b. 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;

c. 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;

d. 在经常需要根据范围进行搜索的列上,因为索引已经排序,其指定的范围是连续的;

e. 在经常需要分组和排序的列上,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;

f. 在经常使用在WHERE子句中的列上,加快条件的判断速度。

g. 在查询中很少使用或者参考的列不应该创建索引,只有很少数据值,定义为text、image和bit数据类型的列不应该增加索引、当修改性能远远大于检索性能时不应该创建索引。

3.4规范运维人员语句编写

在日常运维人员使用的语句中,会大量出现一些临时的SQL语句,使用常量在条件中进行限制,会出现硬解析的情况。对于这部分语句(SQL Module为PL/SQL Developer),在分析AWR报告时,需要关注SQL Statistics中的SQL ordered by Gets和SQL ordered by Reads 2个指标。大量的Gets(逻辑读)会占用大量CPU时间,大量的Reads(物理读)会引起大量的硬解析,占用大量的Latch,也会消耗大量的CPU时间,导致I/O的瓶颈出现。一般情况下,大量的 Gets会伴随着大量的Reads出现。

根据日常案例分析,从数据库夯住前后导出的AWR报告中可以看出,运维人员使用PL/SQL执行SQL语句,在AWR报告中,逻辑读和物理读多数占比排名较为靠前,使用这2个指标找到了最影响性能的SQL语句,可以通过规范/优化运维语句、增加/创建索引、调整数据表来提高SQL单独执行时的性能,减少SQL执行时出现的高Gets/Reads。

另外,还可以通过增大SGA的方法减少Reads的量。利用相同的SQL语句解析,在第一次解析后,Oracle将SQL语句放在内存中。这块位于系统全局区域SGA的共享池中的内存可以被所有的数据库用户共享。[4]当执行一个SQL语句时,如果它和之前执行过的语句完全相同,则可以大大提高SQL的执行性能,节省内存资源。数据库DBA在init.ora中为这个区域设置合适的参数,当这个区域越大,被保留的SQL语句就越多,被共享的可能性也就越大。

4优化效果

开展系统硬件配置调整、后台程序优化、数据表分析优化、规范运维人员语句编写等优化工作后收效明显,部分SQL语句执行效率提升90%以上,系统宕机和数据库夯住情况不再频繁出现,CPU负荷也有大幅降低,优化后1号节点CPU占用情况如图2所示。

图2 优化后生产库1号节点CPU占用情况

5建议

5.1系统架构迁移调整

统筹规划系统架构和生产库迁移方案,利用现有服务器资源,对系统架构进行迁移调整,将生产库迁移到高性能服务器,从而使系统能够具备采集全省电力用户接入的承载能力。同时,可以在生产库迁移过程中做好数据库版本升级工作。

5.2持续优化系统性能

为保证系统性能最优,运行状况平稳,需要持续开展后台程序优化工作。对执行次数多以及未绑定变量的SQL语句进行缓存和绑定变量;对不合理的部分进行总结归纳,并分类给出优化和修改方案;考虑将不同的数据文件、控制文件、日志文件放在不同的磁盘,表和索引放在不同的表空间;设置合适的page_size大小;设置异步I/O等。

5.3持续优化数据表分析

对系统中的全部数据表情况进行梳理,参考访问数据表的频率和AWR报告、ASH报告等数据库运行情况,统筹分析和规划参数调整和索引维护方案,并对遗留临时表等垃圾数据表进行清理;对表空间大小进行实时监控和优化;梳理并设置合理的分区、压缩,实时监控并设置合适的pctfree、initrans等参数,减少行连接和行迁移,控制表碎片等。

5.4规范运维人员操作

为防止人为因素导致异常问题的出现,需要厂商和运维人员开展日常运维工作中遵从优化方案,定期举办宣贯培训工作,长期进行SQL语句规范。

5.5开展故障分析整理

做好历次宕机故障分析,做好宕机期间资料的收集和归纳,结合AWR报告、alert日志、trc文件和nmon负荷曲线进行统筹分析,并给出相应处理方法和改造方案。找到系统瓶颈和症结所在,并将系统运行日志、系统故障处理记录等资料整理齐全,留档备案,最终形成系统主站故障处理专家库,以便在系统故障时查阅处理方法。同时,制定相关管理办法和操作规范,在将来系统发生故障时启动应急预案,及时发现并做好系统故障的全过程记录,保证系统最快恢复稳定运行状态。

6结束语

采集系统主站性能优化是一项需要长期开展的工作,涉及到数据库、服务器、操作系统等方面的各项技术。采集系统优化工作将成为支撑智能电网建设、支撑电网运营管理、支撑各项电气量数据实时精确采集,支撑海量数据挖掘与深化应用以及提升采集系统运行与管理效率等方面的坚实基础。

参考文献:

[1]刘征.电力用户用电信息采集系统的研究与应用[J].大科技,2013(18):27-28.

[2]梁波,杨铭海. 用电信息采集系统架构及功能应用(一)[J]. 农村电工,2013(2):41-43.

[3]秦靖,刘存勇. Oracle从入门到精通)[M].北京:机械工业出版社,2015.

[4]崔华. 基于Oracle的SQL优化[M]. 北京:电子工业出版社,2014.

本文责任编辑:王洪娟

Performance Optimization of Power User Electric EnergyData Acquire System Based on ORACLE Database

Zhao Pei,Li Chong,Wang Libin,Guo Yishi,Pan Xiaojun

(1.State Grid Hebei Electric Power Research Institute,Shijiazhuang 050021,China;2.NARJ Technology Development Co.Ltd.,Electrical Branch,Nanjing 210000,China)

Abstract:For the increasing pressure of power user electric energy data acquire system master in debugging, access and acquisition,this paper provides system performance optimization methods in hardware configuration,background program, statistics analysis and programming of operation and maintenance staff,after analyzing multiple dimensions and combining operation monitoring,presents the effect of optimization,and gives system optimization suggestions in the future.

Key words:Smart Grid;acquire system;database;performance optimizations;program optimization

收稿日期:2016-01-20

作者简介:赵佩(1990-),男,助理工程师,主要从事用电信息采集系统建设推进和优化研究工作。

中图分类号:TM764

文献标志码:B

文章编号:1001-9898(2016)03-0014-03

猜你喜欢
采集系统性能优化智能电网
SQL Server数据库性能优化的几点分析
基于嵌入式的电量计量采集系统研究
用电信息采集在抄核收中的应用及效果分析
Web应用的前端性能优化
智能电网中光纤通信系统的可靠性分析
智能电网现状与发展分析
Oracle数据库性能调整与优化分析