邹向坤
河北北方学院附属第一医院 信息管理处,河北 张家口 075000
检验信息系统SQL数据库优化的研究
邹向坤
河北北方学院附属第一医院 信息管理处,河北 张家口 075000
目的 优化检验信息系统数据库,保证系统高效运行。方法 使用系统自带以及资源监控软件监测检验信息系统服务器和数据库使用情况,针对存在的问题对系统进行优化。增加服务器内存至12 G,为不同的业务分别创建单独的表空间,采用分级存储策略,同时优化了SQL Server配置参数、查询语句及索引。结果 实现了LIS使用存储过程和作业调度分时处理,保证了服务器的正常运行,同时也避免了更换服务器这种高额的硬件投资。结论 以最小的经济价值及最短的时间,解决了运行十余年的检验信息系统数据库慢或者无法使用的问题。
医院信息化系统;LIS服务器;数据分级存储;资源监控软件
近几年新医改如火如荼的进行,各大医院为了提高工作效率及医疗服务质量,利用信息技术来提升医院管理。医院信息化由收费为中心逐渐转变成以病人信息为中心[1-2]。LIS是医院信息系统中极为重要的一环,很多大型医院目前存在检验结果等候时间过长,患者平均住院日也较长。为了解决这类问题,对LIS提出了更高的要求,其数据库作为系统核心显得越来越重要[3-4]。
在我院检验信息系统投入使用的初始阶段,数据库规模很小,其性能问题不是很突出,随着数据的增长、系统响应时间增加,导致系统性能逐渐降低,甚至在LIS运行期间经常出现间歇性的卡顿甚至服务瘫痪现象,短时间内无法恢复业务,对我院检验科业务造成了极大的影响。具体问题如下:
(1)LIS服务器系统时常卡顿,无法进行登录。
(2)检验科室在早晨的业务高峰期,规律性的发生核收标本异常的问题。
(3)SQL数据库时常会发生死锁。
这几个问题需要从软硬件两方面找原因,先排除硬件问题,再从数据库和业务软件的方面入手进行排查。
2.1 服务器性能优化
2.1.1 性能监测
使用Windows任务管理器以及资源监控软件(Spotlight)对服务器进行内存以及磁盘的监控。Spotlight不仅可以提供实时的监控数据并且可以统计一段时间内的服务器的性能数据。
通过观察数据发现某些时间段服务器的CPU使用率达到100%,内存的使用率长期维持在5 G左右。利用页面活动项(PagingActivity)查看服务器页面文件的使用情况,包括页面文件的读写频率、大小等。其中缓存项反映服务器内存的使用情况,内存缓存的大小会对服务器的运行效率产生很大的影响[5-8]。如果CPU长期占用率居高不下,就要考虑增加物理内存缓解性能瓶颈。磁盘检测要关注I/O读取数据情况,并使用SQL语句在业务高峰期了解数据库中是否存在I/O竞争,频繁的I/O读写操作会耗费大量的CPU资源。
通过监测,发现服务器硬件性能存在瓶颈。检验系统数据库服务器配置了4 G物理内存,而内存使用率在5 G以上,这样就造成了系统需要不断的读写磁盘上的虚拟内存,占用了大量的I/O资源,极大地降低了数据库运行效率,导致检验系统经常性的卡顿和服务异常,所以增大服务器内存迫在眉睫。
2.1.2 性能优化
通过以下几个方面对其进行优化。增加服务器内存至12 G;将数据文件存放在磁盘阵列中;为不同的业务分别创建单独的表空间,采用分级存储策略;使用存储过程和作业调度实现业务分时处理;为了减少磁盘碎片,定期对数据库做导出/导入操作[9-10]。
2.1.3 运行测试
采用Loadrunner负载测试工具,同时定义4组,每组4个用户,使用未来业务增长最有可能频繁使用的4条SQL语句进行测试。每隔30 s增加1组并发运行,测试并发连接数达到1200个时数据库系统的性能。
结果表明优化效果非常明显,并发链接数达到1200个时CPU占用率只有13%,内存占用率维持在12 G以内。至此我院LIS服务器系统卡顿,CPU占用100%的问题已由上述方法解决。
2.2 SQL数据库性能优化
2.2.1 问题分析
针对LIS服务器存在的上述问题(2)和(3),需要从SQL数据库软件方面进行分析定位。问题(2)是因为核收操作涉及到大量的插入语句的执行,对于检验系统的业务数据主表的索引效率有非常高的要求。核收异常说明索引出现问题,应该及时的进行优化和维护。问题(3)数据库死锁是因为LIS系统某些查询语句编写的不合理,没有进行优化造成的。
2.2.2 优化方法
(1)查找SQL性能问题:利用事件探查器进行跟踪监视以定位异常查询;查看SQL历史执行记录,确定严重消耗系统资源的SQL;监控当前活动信息,对当前活动用户资源占用进行排序,查明阻塞进程的事务[11-12]。
(2)SQL语句优化:在设计查询语句时,减少子查询和临时表的使用来提高查询性能;当查询一个结果集时,去除掉不需要用到的列,并通过where条件筛选以缩小结果集;在查询时,尽量使用存储过程和视图的方式对数据库进行访问。
(3)优化索引:如果在查询时使用索引就可以避免对全表进行扫描,这样就能降低磁盘I/O负载,可以有效的提高查询速度。我院LIS数据库的主要业务表的一些字段建立了索引,后期经过长期的测试,发现部分索引建立的不合理,影响了数据表的查询速度,所以后期进行相应的增删并测试,效果良好,极大地改善了查询效率。
(4)优化SQL Server配置参数:SQL Server的内存管理机制非常成熟,它可以动态的分配内存量,可以极大地利用服务器内存。如果服务器不会同时运行其他大型服务,建议不要手动配置物理内存使用值,这样可以让SQL Server发挥其最大性能。如果由于技术水平或者知识产权壁垒的原因无法对SQL查询语句进行优化,可以通过配置SQL服务器属性中的连接选项卡,勾上使用查询调控器防止查询长时间运行,时间根据自身需求进行限制,我院目前限制为20 s。最大并发数也可根据实际情况进行调整。
2.2.3 运行效果测试
经过上述方法优化后,对SQL数据库状态进行了两周的监测,未发现死锁的问题再出现,早晨业务高峰期时检验科核收业务也未见异常,效果良好。
综上可见,利用数据库性能分析工具,找出影响数据库性能最大的问题优先解决。对于服务器硬件的瓶颈问题,通过升级服务器硬件(在不更换服务器的前提下,这样可以最大化节省投入成本)解决,之后在通过数据库及软件技术优化系统工作中的性能瓶颈点。这样可以使检验系统工作的影响和损失降到最低。之后再进行长时间的跟踪统计及分析,逐步的优化系统中存在问题的SQL语句,提高系统效率[13-14]。本研究通过对我院检验信息系统服务器的运行状况进行深入分析,充分结合医院信息系统后台SQL Server数据库及其LIS系统检验的特点,提出检验信息系统SQL Server数据库性能优化的方法并加以实现[15-16]。本文提出的优化方法对基于SQL Server数据库的医院HIS、PACS、EMR系统同样具有借鉴意义。
[1] 陈忠菊.试论SQL server数据库的优化探索[J].科技创新导报,2015,(14):41.
[2] 吴秀君.浅谈Oracle数据库SQL性能优化[J].数字技术与应用,2013,(9) :194-196.
[3] 马汉.数据库SQL优化大总结.计算机与网络[J].2014,(14):40.
[4] 王学慧.基于SQLServer的数据库应用系统性能优化研究[J].
电子科学技术,2015,(1):95-99.
[5] 于雷.关于如何优化SQL数据库的性能的几点分析[J].电脑知识与技术,2016,(26):19-20.
[6] 尚秋菊,张希富,孙雪梅.实现Oracle数据库SQL语句性能优化[J].中国数字医学,2015,(9):88-90.
[7] 郁春兰.对医疗信息系统中的数据库性能优化的探讨[J].数字技术与应用,2014,(1):219.
[8] 贾末,王永刚,沈韬,等.医院信息系统性能优化策略探讨 [J].医学信息学杂志,2014,35(9):28-31.
[9] 杜安瑞,陈雪峰,段劲宇,等.医院数据交互优化的探讨[J].医学信息,2014,(14):4-5.
[10] 冯育栋.信息系统Oracle数据库性能优化研究[J].计算机光盘软件与应用,2014,(24):120-121.
[11] 高欣.关于如何优化SQL数据库性能的几点分析[J].科技创新与应用,2013(27):82.
[12] 李宏伟.地名本体数据库存储模式及应用研究[J].计算机应用与软件,2012,29(4):35-38.
[13] 陈正举.基于HIBERNATE的数据库访问优化[J].计算机应用与软件,2012,29(7):144-149.
[14] 林沣.分布式数据库中空间拓扑连接查询优化处理方法研究[J].计算机应用与软件,2013,30(11):247-250.
[15] 房俊华.DB-Tree:一种高性能的闪存数据库索引结构[J].计算机应用与软件,2013,30(11):243-246.
[16] 陈芬.改进量子粒子群算法优化神经网络的数据库重复记录检测[J].计算机应用与软件,2014,31(3):20-21.
本文编辑 韩淑英
Study of SQL Database Optimization for Laboratory Information System
ZOU Xiang-kun
Department of Information Management, the First Hospital Affiliated to Hebei North University, Zhangjiakou Hebei 075000, China
Objective To optimize the database of LIS, and ensure the efficient operation. Methods Using system software and resource monitor software, server and database usage of LIS was monitored and system was optimized for existing problem. Increasing the server memory to 12 G, the several separate tables space were created for different projects. With class-based policy, SQL Server parameters, queries and indexes were optimized. Results Time sharing processing with storage procedures and task scheduling was realized, which ensured the normal operation of the server and avoided hardware investment of changing server. Conclusion With the smallest economic value and shortest time, this study solved the problem that LIS database operated slow or cannot use last for more than ten years
HIS; LIS server; data hierarchical storage; resource monitor software。
TP311.132.3
C
10.3969/j.issn.1674-1633.2017.06.038
1674-1633(2017)06-0142-02
2017-03-10
2017-04-11
作者邮箱:zxkleon@163.com