基于调机自动化数据维护的数据库性能优化
2022-08-08梁婷LANGTing
梁婷LⅠANG Ting
(北京现代通号工程咨询有限公司,北京 100160)
1 概述
BDZ 型调机自动化系统是一套通过控制台指挥机车应用于编组站调车机车自动控制的全新智能化系统。针对调机自动化系统开发的数据维护系统作为主系统的辅助工具,提供丰富的使用方式,尽可能给现场使用和维护人员提供最大的方便,方便了现场工作人员进行系统故障判断和维护,提高系统使用维护效率,最大限度地减少了维护成本,代替了我们过去利用手动操作的方式,实现了机车错峰作业的速度和准确性。程序采用网络服务方式,以网站形式实现,采用IBM DB2 数据库,提供并实现以下功能:①车载信息数据查询:以站场图显示道岔、站场信号机等信息实现快速浏览全部机车历史数据,当前机车位置、实际速度、距前方阻挡信号机及停车点距离、当前平调信息指令、系统状态等方便操作人员对机车历史状态随时掌握;②机车故障现象汇总:提供机车历史故障和当前发生并未恢复故障的综合数据显示;③故障原因分析说明:根据故障现象进行分析,快速全面地提供故障原因及维修方法说明;④实时机车数据显示:实时显示全部机车当前状态,包括控制状态、走行距离、占用区段、信号机显示情况、机车是否故障以及机车当前的速度;⑤机车速度、距离曲线生成:根据机车速度、目标速度、限速;机车空闲距离、防护距离、车列轨道占用百分比等数据生成曲线,方便机车状态维护;⑥调机自动化系统参数设置:提供包括系统主机地址,地面系统所需各种参数,根据用户权限,提供修改和查询功能;⑦调机自动化数据维护工具维护:对数据维护工具所需的如故障分析方法,用户权限等提供修改功能。调机自动化数据维护系统在使用一段时间后会出现一些严重影响系统性能的问题,开始影响用户的使用,通过反复观察总结,发现其中的问题,需要着重对针对该问题出现的原因作出相应的修改和调整。针对以上问题的发生,技术人员已提出改进:当发生冒进信号以及超速危险信号时,车载显示器能够及时发出声音和文字报警的提示;在发生系统故障时,车载显示器就能及时发出提示报警。目前的BDZ 系统采用了无线通信的方式将调车作业相关的道岔、轨道电路区段信息及信号传送到调车机车,并且在车载人机界面单元上实现调车机车信号及站场联锁等信息的实时情况显示,反映调车车列(含单机)的运行条件;同时,通过对调机运行前方信号和车站相关基本信息的处理,实现车站中联锁区域内的调车车列(含单机)速度监控;在驼峰推峰作业中实现驼峰机车遥控。
2 调机自动化数据维护系统锁等待、 锁升级引起的性能瓶颈问题阐述
数据维护系统在运行一段时间后,通常会出现系统运行变慢,对于我们最终所使用的交互响应并没有达到预期中的效果,致使用户不能完成其所有的工作,尤其在业务繁忙时更是无法得到及时的交互响应,完成调机自动化数据维护系统指令事务和处理站场查询及车载信息显示功能所花费的时间太久。等待、锁升级引起的性能等应用程序在一段时段内变得逐渐缓慢,系统CPU 使用频率比较高,数据库存在大量连接,每个连接都要处理很长时间。
对于要确定调机自动化数据维护系统信息显示、操作及报警功能所造成问题的根本性原因,必须通过最终用户来评估当前车载显示器人机交互界面系统的实际使用情况,并对此进行进一步的分析,找出系统功能及防护解锁功能资源使用的问题所在。
通过检查DB2DIAG.LOG,在数据库诊断日志中发现表 JB_RIGHT_RC,ROUTE_PACKAGE,SL_PACKAGE 这几张表经常存在S 锁升级现象,通过快照监控发现数据库中存在大量锁等待:
以上这些都严重影响数据库的性能。
总体上,发现在通常情况下存在以下几个性能问题:①事务或查询的响应时间比预期的要长;②事务吞吐量不足以完成必须的工作负载;③事务的吞吐量减少。
为了达到数据库应用程序使用的最佳方式,系统使用人员必须经过专业操作人员的培训,达到一定标准方可进行操作,其中包括车载设备操作人员、地面设备维护人员及车载设备维护人员等。车载设备操作人员必须具备遥控状态下的人工干预能力;地面设备操作人员必须具备基本的计算机使用常识。对此专业操作人员应根据实际情况制定出一个简单清晰的计划用于评估这些系统的性能,同时在出现问题的时候能够及时准确地对数据修复或调整,来维持数据应用程序的良好运转。车载设备日常使用时,接班人员应按步骤对设备进行常规检查,系统开始运行之后,观察车载显示器主程序是否始终保持正常运行状态,如有存在异常,这就说明设备配置不匹配,必须记录故障发生时间,需要报维修人员进行手动配置。这样就能够通过尽早地识别出问题所在,及时地修复并调整使用性能,有效地防止问题的产生,避免对用户产生不必要的影响。以下便是故障出现情况下常见的几种操作方法:
①无线通信断路丢失:
无线通信断路丢失后,此刻的车载设备处于无法接收地面信号的状态,同时车载显示器主界面上所有的信号机名称都会闪烁,此时操作人员应注意观察并确认地面信号,以确保行车安全。
无线通信断路丢失时,应禁止投入自控。如果在自控状态下通信消失,此时的车载设备会自动进入制动状态,等待通信恢复之后,如果仍然处于遥控的状态,那么系统就会根据当前实时的状态来继续跟踪控制。
车地无线通信断路丢失之后,机车防护功能会导向自动禁用状态,此时的操作人员应注意观察地面信号,保持正常行车。等待车地无线通信恢复正常之后,防护功能便会自动投入工作状态。
②定位错误:
操作人员在使用系统时,如果发现定位错误,应该及时进行“重新定位”的操作,清除或者手动修改定位。如果定位错误的时候正是机车处于自控的状态,那么应该必须立即退出自控。同时在定位错误的同时禁止使用遥控功能。
清除定位操作是按压“重新定位”的按钮,同时点击“仅清除定位”的按钮并点击“确认”按钮清除机车定位,确认以上操作之后,系统会自动清除当前定位并且重新开始定位计算机车的位置,等待条件满足之后,会自动对调机进行定位。
手动定位操作是按压“重新定位”的按钮,输入此刻机车前方信号机,并且点击“确认”的按钮,重新放置定位。
③站场表示故障:
当地面服务器与CIPS 站场表示服务的连接发生冲突时,故障发生,车载显示器所有的调车信号都会显示蓝灯,没有进路显示。此时的车载显示器信号失效,系统的信息防护以及自控功能都显示失效状态,操作人员必须等待确认地面信号正常之后方可行车。
④系统故障:
当系统发生故障并且影响到我们正常作业的时候,应及时关闭车载电源控制器或者车载主机控制开关,强制关闭防护功能。同时也可以采用关机的方式关闭所有系统功能,并及时向工作人员报修。但当机车不在系统控制区域内运行的时候,即可关机。维护人员应及时根据站内控制区内的轨道电路分路不良等情况分析进行统计,提交给系统技术人员。由技术人员将轨道电路分路不良区段导入系统数据库,及时减轻轨道电路分路不良对系统功能造成的影响。调机自动化数据维护系统考虑到上述因素,根据实际设计采用适当的硬件,在保证较充足的硬件物理资源的同时,在软件上进行下一步的系统性能优化调整。
调机自动化数据维护系统性能调整的方法和过程以传统的调机自动化系统为基础,综合现代调机自动化的需求,BDZ 型调机自动化系统集合了驼峰推峰机车信号、调车作业信息(包括地面信号、调车计划等)车上显示、利用无线通信通道,完成对站场内所有有调车机车日常作业的监控和特定作业的自控,利用先进的计算机软件和数据库技术,从网络平台、硬件平台、软件平台以及应用界面几个方面,将系统与CIPS 系统结合,使系统的一体化程度以及整体的自动化程度都达到了一定的水准,同时也提高了调机自动化数据维护系统对于数据存储以及读取的速度。
①性能调整方法:
根据数据维护系统的特殊性能要求,对于调机自动化数据维护性能改进过程可以通过以下几个方面来考量。
1)首先执行下面的初始检查:
a)获取直接用户(即车站信息工区工作人员)的使用反馈,确定性能改进的目的和范围;b)获取性能表示好与坏结果时的操作系统、数据库以及我们的应用程序统计的信息;c)对数据库做一次全面健康检查。
2)制动测试无输出:
a)首先根据收集的信息进行制动测试,在对应用特性的了解进行单独制动测试时,如果投入后没有制动效果,可进行检查,如果问题不能解决,应该排除操作系统以及硬件资源造成的原因,及时通知维修人员;b)检查车载主机上的控制开关,此时应处于打开状态,因为系统性能的问题也有可能是由于非SQL 部分造成的;c)检查车载主机上的控制开关下方的保险管是否导通良好。
3)控车测试不能正常控车:进行控车测试时,如果投入后机车没有按照当前指令执行,可以进行相关检查并通知维修人员提出相应的优化措施,并根据用户需求轻重程度来进行逐一改进并加以实施。
4)检查车载主机上的控制开关是否处于打开的状态,通过操作者与维修工作人员的多次沟通,检查车载主机上的控制开关以及下方的保险管是否导通良好,以此来验证测试时反映出的异常问题处理完成之后是否达到了用户的预期效果。
调整仅能够对数据维护系统的效率进行一定程度的更改。要考虑投入多少时间和费用来改善系统性能,以及要投入多少额外的时间和费用来帮助系统的用户。
实际的性能调整需要系统资源间的交易,例如,要提供改进的I/O 性能,可以增加缓冲池的大小。但更大的缓冲池也需要更多的内存,这就可能影响性能的其他方面。
随着数据维护系统的应用越来越庞大和硬件性能的不断提高,全面的调整应用逐渐变成代价高昂的行为,在这种情况下,要取得最大的投入/效率比,较好的办法是调整数据维护系统应用的关键部分,使其达到比较高的性能,这样从总体上来说,整个系统的性能那也是比较高的。这也就是有名的20/80 原则,调整应用的20%(关键部分),能解决80%的问题。(如图1 所示)
图1 数据处理过程拓扑结构图
②问题处理过程:
1)首先检查数据库配置并进行性能监控:
经过查看数据库的配置参数和数据库的性能监控,发现数据库中的锁内存(LockList)参数为10240,在监控数据库中发现该值的使用高水位已经达到最大值,所以首先调整该参数,将它调整为20480:
Db2 update db cfg for locomdb using locklist using locklist 20480
调整后继续监控数据库,发现锁内存的使用高水位仍然达到最大值,所以这个时候怀疑是大量应用没有释放锁才导致即使分配了更多的锁内存,也仍然无法满足要求。这种情况下需要考虑从应用程序SQL 语句入手。
2)找出引起锁等待的SQL 的语句:
执行db2 get snapshot for dynamic sql on locomdb |sort-5 +1>top.sql grep -E“total execution time“top.sql>time.sql sort -5 +1 time.sql, 发现一条sql 语句的执行时间较高。与应用人员交流,发现这条SQL 语句的执行次数特别多,对该SQL 语句执行时间评估;
Db2batch -d locomdb -f l.sql
发现这条SQL 语句执行时间大概在3 秒左右(如果资源紧张,执行时间会更长),这条SQL 语句会导致JB_RIGHT_RC,ROUTE_PROPERTY 表发生锁升级现象。进而会导致另外的SQL 语句出现等待现象,那么在这条语句出现锁等待的阻塞后,进而会影响后续的SQL 语句,这样,就会出现大量的锁不释放,而连接不释放又导致数据库连接耗尽。这是造成数据库问题的根本原因。
③问题总结:
1)在这条SQL 语句后面加上with ur 参数,这样该SQL 语句再度取得时候就不会在所应用的表上加S 锁,从而可以把这个问题解决掉。2)对SQL 语句考虑能否优化逻辑;3)利用DB2 相关工具为这条SQL 语句生成索引建议;4) 检 查 并 更 新 数 据 库 统 计 信 息;5) 检 查DB2_EVALUNCOMMITTED 注册表变量。这个设置使DB2不必事先在CS 或者RS 隔离级别锁住一行才判断谓词,这样在确定这一行满足谓词之前,他不会被锁住;6)检查DB2_SKIPINSERTED 注册表变量。这个变量控制未提交的插入在CS 或者RS 隔离级别下是否可以被游标忽略。启用这个变量会使未提交的插入被当成他们完全没被插入一样处理。同样,这种行为也许可以被接受,也许不能被接受,所以需要了解他的隐含后果。
3 结束语
在数据维护系统中,造成系统处理速度缓慢,响应时间过长的主要原因是存在大量的I/O 等待,而造成I/O 等待的主要原因有两个:一是因为最初的存储规划设计没有正确合理的分布数据,二是数据库中某些不够简洁的SQL语句并没有创建合理的索引。通过以上步骤的调整,基于DB2 数据库的调机自动化数据维护系统处理速度大大提高,系统响应时间大大减少,目前运转状态正常,可以满足当前应用需求。
在现今信息化高速发展的社会,我们必须要及时而充分地利用有效的管理方式和搜集各类信息的资源,对数据库技术进行必要的科学研究和决策管理。BDZ 型调机自动化系统就是利用管理信息系统采用无限通信的方式将调车作业相关的轨道电路区段、信号及道岔的信息通过传送的方式送到调车机车,并且在车载主机的人机界面上通过实时信号显示调车机车以及站场连锁的信息,可以及时地反映出相关道岔、进路准备以及调车车列的当前位置信息等情况,从而进一步提升安全保障能力。