项目简介(功能与用途):
江苏电力公司电力负荷管理及用电监控(简称负控系统)系统是为了解决了近年来江苏的“电荒”而上线的一个电力调度系统。通过负控系统可以合理进行电力的调度从而最大程度上保证企业和用户的用电。
项目难点与解决方案:
江苏电力公司负控系统后台数据库为DB2数据库,中间件为IBM CICS交易中间件,运行在IBM AIX操作系统上,前台采用VB和C开发。
该项目的难点主要由以下几点:
1, 系统上线的时间非常紧迫,限期在江苏17个地市上线,这就是说要确保每次每个地方上线都要成功不能失败。
2, 由于采用了IBM 的交易中间件CICS,这就需要在应用,数据库和CICS之间合理的调整相关配置参数,确保系统运行性能。
3, 在白天高峰期间,交易并发多,数据库性能不好。
4, 应用中部分SQL语句比较复杂,而且SQL语句的写法和谓词等方面使用不当,直接造成低效率的SQL运行,占用系统I/O和内存。
5, 各地市使用的DB2的版本(DB2 V5,DB2 V6,DB2 V7,DB2 V8)不一致,使用的操作系统(AIX 4.3.3 ,AIX 5L,AIX 5.2)版本也不一致,使用的CICS版本(CICS 4.3,CICS 5.0,CICS 5.1)也不一致;这需要在有限的时间内在不同的版本上做调试并且只能成功。
6, 负控系统关联营销系统和调度系统并且在同一台主机上工作,所以上线需要和相关部门和省电力公司协调,必须确保不能影响别的业务系统,必须保证首先不能因为负控系统不能上线而影响别的系统,其次保证负控系统上线后不能因为应用对资源的占用而影响其它系统。
对于上述问题,分别采用了如下解决方案:
1, CICS版本做充分的测试,确保应用万无一失。在应用开发期间,对不同的数据库版本,不同的操作系统版本和不同的
2, locklist,maxlocks,locktimeout和dlchktime)等数据库配置参数;其次,为了让锁的快速释放不至于引起交易阻塞,就 需要我们在表上创建合理的索引。所以,造成引起锁等待的应用程序和SQL语句,对这样应用和SQL进行合理的构建索引。在业务逻辑允许的情况下,尽量使用 UR(uncommit read)的隔离级别来提高读并发。对于负控系统白天并发期间产生的大量锁现象,首先,需要加大相关数据库中有关锁的参数(
3, SQL语句,利用DB2监控工具(事件监视器)找出这些SQL语句并作出解释分析判断SQL语句的瓶颈,对于这些问题,对开发人员详细解释如何高效的使用SQL,协助开发人员修改应用。对于应用开发中的很多运行效率低下
4, CICS的接口,CICS和数据库的XA接口,在业务逻辑满足的情况下,尽量采用一阶段提交(1pc),因为1pc的运行性能要比两阶段提交好。对于应用程序和
5, DB2的数据库性能调整中,详细评估系统中可以使用的资源和系统最大可能占用的资源,逐步调整数据库的配置参数并进一步监控调整的结果。因为负控系统和营销系统,调度系统运行在同一台机器上,所以在进行
项目成功与失败的经验归纳:
江苏电力公司负控系统从2004.4月首先在无锡上线到2004年11月在南通最后上线,整个系统上线期间如履薄冰,如临深渊。现在系统已经稳定运行近两年,负控系统的成功经验有以下几点:
1, 需要对企业信息架构有全局的了解,因为现在企业信息架构非常复杂,往往涉及到的不只是数据库,还有操作系统,中间件,应用,存储等,所以需要对信息架构 全局有很全面的了解,这就需要不断的学习和更新新的技术。这次我们在负控系统上线期间,因为时间紧迫(一个地市只有一晚上将近10小时时间),在这么短的 时间内,很难保证很顺利的上线,如果出现问题,一定要快速的定位是在什么层面(操作系统,数据库,中间件,应用,存储等)出现的问题然后快速解决之,所以 必须具备全局的对信息架构的驾驭能力。
2, 和相关业务部门的沟通和协调非常关键,很多时候我们需要他们配合才能完成相关工作,所以交流和沟通是非常关键的。国内很多垄断部门的员工往往非常牛,这 就需要我们耐心的,不厌其烦的去和他们做好沟通和协调。这一点对负控系统的按时上线也非常关键。
3, 在企业内部,往往可能存在很多不同版本的数据库,操作系统,CICS和应用版本,他们之间的兼容性非常关键。我们曾经碰到很多DB2 V8客户端无法访问DB2 V7服务器的情况,也碰到很多DB2 V7客户端访问DB2 V8服务器时出现实例crash的现象。同样还有很多操作系统版本和CICS版本不一致所带来的问题。这就需要我们详细了解数据库,CICS,应用和操作 系统之间的兼容性问题。
4, 在部分地市,由于使用了最新的DB2版本,发现上线后有很多问题,后来经过问题诊断和咨询IBM,发现是DB2新版本bug的问题,所以企业在使用相关软件的时候,最好不要用最新的版本而要用相对稳定的版本。
5, 在进行数据库的配置参数调整时,一定详细了解系统的物理资源和逻辑资源,以及目前系统中已经在运行的系统和应用,确保新上线的应用不影响已有的应用。
6, 要结合不同的数据库产品,在保证业务逻辑允许的情况下,使用正确的隔离级别(UR)和CICS的一阶段提交来最大程度上提高数据库的并发和应用的性能。
负责完成江苏电力公司负控系统在17地市的上线;负责完成负控系统数据库后期的性能监控,性能调优;负责培训编程人员如何编写高效的SQL,从而使整体应 用运行效率提高;负责构建数据库的索引并删除冗余的索引;负责负控系统的数据移植;负责协调上线期间和业务部门的交流沟通;负责负控系统后期的数据库维护 和技术支持。