1、中国卫生信息管理CHINESE JOURNAL OF HEALTH INFORMATICS AND MANAGEMENT802中山大学附属第六医院,广东省广州市,510655作者简介:李银(1991),男,硕士,助理工程师;研究方向:医院信息化、图像处理;E-mail:通信作者:姚麟(1975),男,硕士,副研究员;研究方向:医院信息管理、图像处理、运营管理;E-mail:通信作者doi:10.3969/j.issn.1672-5166.2023.05.021HIS系统数据库阻塞问题及解决方案李 银 伊永菊 姚 麟文章编号:1672-5166(2023)05-802-06中图分类号:R-058
2、;R197.3文献标志码:A摘要当前,越来越多的医疗机构在建设医院信息系统(HIS)时选择了Oracle数据库,但由于其工作机制的限制,随着数据量和并发数的增加,数据库阻塞现象难以避免。本研究通过收集日志,对中山大学附属第六医院的数据库阻塞情况进行归纳分类。同时,结合医院的医疗流程与信息化现状,从软件程序与数据库方面,分析了产生问题的原因,并制定了相应的优化方案,旨在解决医院近年来HIS系统频繁出现的数据库阻塞问题。医院HIS系统优化后此类阻塞问题的发生频率从每周12.1次降低至1.3次,说明所提出的解决方案是有效的。关键词HIS Oracle数据库 数据库阻塞 SQL语句 性能优化Solut
3、ion Strategies for Database Blocking Incidents in HISLI Yin,YI Yongju,YAO LinThe Sixth Affiliated Hospital,Sun Yat-sen University,Guangzhou 510655,Guangdong,ChinaAbstractIn recent years,an increasing number of healthcare institutions have chosen Oracle databases for the construction of Hospital Info
4、rmation Systems(HIS).However,due to the limitations of the Oracle databases operational mechanisms,the occurrence of database blocking incidents becomes difficult to avoid as data volume and concurrency increase.This study,by collecting logs,categorizes and classifies the database blocking situation
5、s at the Sixth Affiliated Hospital of Sun Yat-sen University.Simultaneously,in conjunction with the hospitals medical processes and information technology status,it analyzes the causes of the issues from the perspectives of software programs and databases.Corresponding optimization plans have been d
6、evised with the aim of resolving the frequent database blocking problems that have arisen in the hospitals HIS system in recent years.After optimization,the frequency of blocking issues in the hospitals HIS system has decreased from 12.1 times per week to 1.3 times,which clearly demonstrating the ef
7、fectiveness of our proposed solutions.KeywordsHIS;Oracle database;database blocking;SQL statement;performance optimizationChinese Journal of Health Informatics and Management,October 2023,Vol.20,No.5 中国卫生信息管理杂志2023年10月第20卷第5期CHINESE JOURNAL OF HEALTH INFORMATICS AND MANAGEMENT803HOSPITAL INFORMATIZA
8、TION 医院信息化0 引言随着医院信息化的不断发展,医院信息系统(HIS)上运行的业务变得越来越复杂。HIS 系统刚上线时,只需处理简单的医嘱开立、收费、药房发药等基础业务,现在则需要与电子病历系统、实验室信息系统、影像归档和通信系统,以及集成平台等多个核心系统实时交互。HIS 系统每天需要处理的业务数据量与并发量都大幅增加。这些庞大的数据量与并发量对数据库、软件程序与临床终端等 HIS 系统各组成部分产生了很大的压力,HIS 系统的稳定、高效运行对各个组成部分都提出了相当高的要求1。与此同时,HIS 系统每天的业务高峰期数据库的访问量巨大,为了保证数据读写的准确一致,数据库会对其发起锁请求
9、2,若没有及时处理这些锁请求,就会造成数据库阻塞。这种现象对于临床医务人员来说,表现为系统卡死,无法继续操作3,严重影响临床工作的进行。因此,本研究对 HIS 系统数据库阻塞产生的原因进行了详细的分析与研究,旨在解决由数据库阻塞引起的问题,保障 HIS 系统的正常运行,并针对中山大学附属第六医院(以下简称“该院”)的信息化现状制定了相应的解决方案。通过大量的优化实践工作,总结出了一些经验。1 HIS 系统与 Oracle 数据库阻塞现象1.1 HIS 系统简介HIS 系统是一个集成了医院门诊医生站、住院医生站、门诊护士站、住院护士站、门诊收费、住院收费、药品、医技终端和报表统计等相关模块的大型
10、医院信息管理系统。该系统支持医院的行政管理与事务处理业务,可降低事务处理人员的劳动强度,辅助医院管理和高层领导决策,提高医院医务人员工作效率4。HIS 系统各业务功能模块见图 1。图 1 HIS 系统各业务模块该院 HIS 系统采用的是具有良好的可移植性、易用性和强大功能的 Oracle 数据库。Oracle 数据库适用于各种规模的计算机环境。同时,它还是一种高效、可靠的数据库解决方案,能够满足高吞吐量的需求,具有较Chinese Journal of Health Informatics and Management,October 2023,Vol.20,No.5 中国卫生信息管理杂志20
11、23年10月第20卷第5期中国卫生信息管理CHINESE JOURNAL OF HEALTH INFORMATICS AND MANAGEMENT804高的数据安全性和稳定性5。1.2 HIS 系统中 Oracle 数据库阻塞现象的研究现状近年来,HIS 系统数据库阻塞问题的研究取得了重要的进展,相关研究对该问题进行了调查和总结。例如,在王伟伟等的研究中,他们探讨了数据库阻塞的发生机制与检查方法,并剖析了产生此问题的原因6。姜文等使用 SQL 语句来检测、定位数据库锁与阻塞现象,并通过在 Linux 环境下对检查脚本进行模拟与测试,提高数据库阻塞检测的效率和准确性7。然而,仍有一些问题尚未解决
12、,尤其是处理大规模数据和在高并发环境下时。与其他行业的解决方案相比,本研究特别关注医疗领域的需求和痛点,提出了更为定制化的解决方案。这些解决方案不仅适用于大规模数据和高并发情景,还充分考虑了医务人员的工作流程,以确保在实际医疗环境中的可行性和实用性。该院 HIS 系统涵盖了大多数医疗流程,多个用户可同时对系统进行操作,导致 Oracle 数据库(下文简称“数据库”)出现大量并发操作。为了确保所有用户数据读写的准确一致,数据库会对与用户操作相关的事务数据进行加锁,产生行独占锁。这样可以保证访问数据库的用户相对独立,其他事务必须等待前一个事务解锁后才能处理相关数据8,以确保数据的一致性和正确性。然
13、而,由于 HIS 系统业务的复杂性,许多业务表在各个业务流程中被频繁使用,如果数据库出现大量事务排队等待解锁,就会导致数据库发生阻塞并引发大面积的系统崩溃现象9。在 HIS 系统中,这种情况表现为系统卡顿、死机,严重时可能导致系统瘫痪,医务人员无法进行系统操作。1.3 数据库阻塞问题收集与分类本研究整理了该院在 20192021 年期间收集到的所有数据库阻塞日志,共计 1 892 条。日志的采集方式见图 2。同时,为了收集该日志,开发了一套基于 C#的数据库阻塞检测程序。该程序能够自动检测当前 HIS系统是否发生数据库阻塞,并获取相应客户端的 IP 地址、SQL 语句、数据库进程 ID 以及当
14、前数据库会话数等信息,以便于跟踪处理和进一步分析产生该现象的 原因。图 2 HIS 数据库阻塞日志收集流程通过上述流程获取到数据库阻塞汇总日志,通过对日志的分析发现,无论是哪种形式导致的数据库阻塞,HIS 客户端都会表现为系统卡死,医务人员无法继续操作。为了定位造成该现象的原因,采用了“先查数据库,后查软件”的方式。通过这种方式,逐一分析并归纳了阻塞类型,阻塞类型及分布情况见表 1。表 1 20192021 年 HIS 数据库阻塞类型及占比类型发生数据库阻塞情景占比/%软件程序问题医生下医嘱时26.2护士审核、分解医嘱时37.1数据库问题会话事务过多7.9数据库长会话3.0业务表数据量过大1.
15、6其他其他(用户操作习惯问题、网络问题、硬件问题等)24.2Chinese Journal of Health Informatics and Management,October 2023,Vol.20,No.5 中国卫生信息管理杂志2023年10月第20卷第5期CHINESE JOURNAL OF HEALTH INFORMATICS AND MANAGEMENT805HOSPITAL INFORMATIZATION 医院信息化2 常见数据库阻塞问题分析2.1 软件程序问题导致的阻塞阻塞问题主要出现在系统响应间隔较长的操作上,例如审核医嘱、分解医嘱等操作。相比之下,响应速度较快的操作很少会
16、出现阻塞问题10。从表 1 中可以发现,医生下医嘱时、护士审核和分解医嘱时这两种情景导致的阻塞占总数的一半以上,具有代表性。因此,针对这两种问题进行分析。2.1.1 医生下医嘱时此类阻塞是由两个或更多客户端同时更新住院医嘱表引起的。经过检查和分析,发现在进行编辑检查申请单、开立新医嘱、打印医嘱单、医嘱保存、医嘱修改等操作时,系统会使用 UPDATE 指令更新医嘱表的信息。在这种情况下,如果其他电脑同时对该患者的医嘱进行操作,就会出现对行资源的争夺,从而导致数据库 阻塞11。2.1.2 护士审核、分解医嘱时与医生下医嘱时发生数据库阻塞类似,此类阻塞是由两个或多个客户端同时更新医嘱执行表引起的。经
17、过检查和分析,在护士进行审核医嘱、分解医嘱和打印单据等操作时,更容易出现阻塞。同时,该院 HIS 系统每次执行分解医嘱时,会自动查询出当前科室明日前所有应执行的长期医嘱。根据临床实际业务需要,大部分病区的医嘱分解都集中在每天中午 11 点左右,此时会出现大量执行医嘱信息12。根据现场调研结果,这个分解医嘱的过程需要持续 10 20 分钟,而执行时间过长,容易导致阻塞现象的发生。2.2 数据库问题导致的阻塞2.2.1 数据库会话事务过多过多的数据库会话事务也是导致数据库阻塞的原因之一13。通过检测程序,本研究发现一旦出现系统大面积卡顿,通常伴随着数据库的会话数激增,这种增幅会超过闲时会话数的 1
18、 倍以上。同时,每个开启的数据库会话都会占用服务器一定的内存,当服务器内存使用率达到 95%时,会影响系统的正常运行14。此外,经过检查,还发现 HIS 系统程序中存在一些设计漏洞,这些漏洞会在业务进行中开启会话事务。如果期间事务错误或 HIS 系统异常退出,程序将无法将未完成的事务回滚,从而导致数据库存在大量无效会话,影响服务器的性能。这种影响在业务峰值时尤为明显。2.2.2 数据库长会话问题数据库长会话是指一个连接与数据库的会话长时间处于打开状态,并在此期间保持着执行状态。同时,长会话的存在会对 HIS 系统的响应时间产生影响。例如,在住院患者出院结算流程中,使用当前的 SQL 语句查询患
19、者费用汇总列表的总耗时为 100 秒,通过提升该SQL 语句的执行效率,将查询总耗时缩短为 20 秒,可以有效提升 HIS 系统的运行效率,并降低由其他业务引发的数据库阻塞的可能性15。2.2.3 数据库核心业务表数据量问题HIS 系统的运行性能可能受到数据库中核心业务表数据量过大的影响,这些核心业务表涉及临床绝大多数业务。业务表数据量过大也会导致数据库查询性能降低、系统响应时间变长等问题,同时增加数据库阻塞的概率16。通过统计,截至 2021 年 12 月,数据库中有19 张业务表的数据量超过 1 亿行,包括医嘱表、执行表、费用信息表等。3 主要对策3.1 软件程序解决方案3.1.1 医生下
20、医嘱时对HIS软件程序进行如下修改以解决此类问题:在编辑检查申请单时,不再更新医嘱表字段,而是新增预约申请表以记录检查申请单的状态。全院推广使用医嘱数字签名(certificate authority),医生对医嘱进行数字签名后,在住院医嘱表增加医嘱签名状态字段,用以记录医嘱是否签名。对于已签名的医嘱,护士审核前不再更新住院医嘱表中相关字段。对于新开立的医嘱,要求医生完成数字签名后,护士才能审核医嘱。同时,在对已签名的医嘱进行修改之前,医生必须解签名。通过以上改进,将医生开立医嘱的动作相对独立出Chinese Journal of Health Informatics and Manageme
21、nt,October 2023,Vol.20,No.5 中国卫生信息管理杂志2023年10月第20卷第5期中国卫生信息管理CHINESE JOURNAL OF HEALTH INFORMATICS AND MANAGEMENT806来,避免了对数据库行资源的争夺,从而有效解决由开立医嘱引起的数据库阻塞问题。3.1.2 护士审核、分解医嘱时针对此类现象,采取以下改进措施:调整系统中护士打印单据的时间,使其在分解医嘱完成之后才生成单据信息。优化医嘱审核、分解程序,根据数据库阻塞汇总日志对医嘱审核、分解过程进行详细分析,大量修改程序代码以优化此过程的效率。在医嘱审核、分解过程中增加进度显示,并通过系
22、统文字警示护士不要干扰此过程,以减轻系统负担。全院推广使用移动护理掌上电脑(PDA),梳理医嘱执行过程中各节点的时间顺序,避免逻辑上的冲突。利用临床早交班时间组织多次科室培训,向医生和护士传达正确的 HIS 系统操作方法,并通过问卷调查巩固和加强培训效果。通过这些措施,一方面大幅缩短护士审核医嘱和分解医嘱的执行时间,另一方面消除人为操作不当引起的数据库阻塞问题。3.2 数据库解决方案3.2.1 数据库会话事务过多针对此类问题,采取以下措施:对 HIS 系统进行全代码扫描,发现了 31 处开启事务后,程序未调用回滚机制的问题,并逐一修复。为了避免数据库存在过多无效会话,对 HIS 系统设置了自动
23、退出并回收会话的设定。具体而言,当用户 30 分钟内未进行任何操作时,系统会自动退出并回收会话资源。对 HIS 系统所有外部接口进行排查,检查对应的接口服务是否存在未回收资源的情况,并统一设置为 30 分钟进行回收。根据采取措施后一个月的观察,最大数据库会话数不超过 2 100 个,和优化以前的最大会话数超过 4 500 个相比大幅减少,成功地保证了该院业务峰值时会话数不会因为过大而影响服务器性能。3.2.2 数据库长会话问题通过分析记录到的长会话,发现这些查询时间过长的 SQL 语句普遍存在硬解析与全表扫描的问题。为解决这些问题,采取了以下优化措施:使用“EXISTS”代替“IN”作为查询条
24、件;统一对查询条件添加时段范围限制,限制为 1 年内;将数据库中使用了“SELECT*”进行全表扫描的语句,修改为根据业务需要查询具体字段;检查数据库中存在的索引碎片并进行重建。3.2.3 HIS 数据库核心业务表数据量问题采用数据归档的方法减少业务表的数据量。数据归档后,通过全表扫描方式进行测试,每张业务表的响应时间均小于 0.2 秒。此外,为确保不再出现类似问题,该院每年都会对核心业务表进行数据归档操作。4 优化效果采用上述解决方案进行优化后,对优化前后 HIS 系统关键业务流程的系统响应速度进行了对比分析,结果见表 2。优化前后的数据为作者分别于 2021 年 10 月和2022 年 3
25、 月,在同 1 台临床科室电脑上运行各个业务模块获得并统计汇总;耗时指临床科室电脑上实际执行业务流程的时间,优化前后分别采样记录了 5 次以获取平均值。表 2 优化前后 HIS 系统关键业务流程性能对比业务模块业务功能优化前耗时/秒优化后耗时/秒优化比例/%系统登录系统登录14.28.341.5门诊医生加载患者信息(列表 60 人)3.72.337.8医嘱保存(5 条)2.82.414.3病历签名3.11.551.6住院医师加载患者信息(列表 100 人)2.52.116医嘱保存(5 条)9.16.330.8病历签名1.91.710.5住院护士审核医嘱(100 条)35.310.271.1分解
26、医嘱(100 条)316.326.791.6通过对比得知,优化后的系统响应速度显著提升。以分解 100 条医嘱为例,因为该院 HIS 系统可以由护士自定义分解医嘱条数,所以作者于业务高峰时段在临床电脑上,记录了护士分解 100 条医嘱操作所耗时间,Chinese Journal of Health Informatics and Management,October 2023,Vol.20,No.5 中国卫生信息管理杂志2023年10月第20卷第5期CHINESE JOURNAL OF HEALTH INFORMATICS AND MANAGEMENT807HOSPITAL INFORMATI
27、ZATION 医院信息化重复操作并记录 5 次,取平均值后发现耗时由优化前的316.3 秒降至优化后的 26.7 秒。同时,利用图 2 的方式统计了该院优化前后(20192021 年与 2022 年)HIS系统发生数据库阻塞的次数,共计 1 892 次,平均每周发生 12.1 次;而在 2022 年共发生 68 次,平均每周仅发生1.3次,优化后发生频率大幅降低。这些结果表明,通过优化 HIS 系统业务流程、处理数据库长会话,以及进行业务表数据归档等措施,有效地提升了 HIS 系统的性能和稳定性,这有助于提高医疗服务的效率和质量。5 结束语本研究通过分析、总结该院 20192021 年期间频繁
28、出现的 HIS 系统数据库阻塞问题,提出了具体的解决方案。方案实施后,改善效果显著。这些方案解决的是目前普遍存在的 HIS 系统数据库阻塞问题,不仅明显降低了问题的发生频率,也提升了 HIS 系统的关键业务性能。此外,还将本方案应用于该院的实际临床环境,并取得了良好的成效,这表明所提出的解决方案在实际应用中具有广泛的可行性和有效性。参考文献1 黄士琴,吕雪峰,马献.医院数据库运维管理与安全问题探析 J.中国卫生信息管理杂志,2023,20(1):99-103.2 王廷任.Oracle 数据库日常维护与优化建议 J.数字通信世界,2019(6):93.3 季焕淑.试谈 SQL 数据库优化技术在信
29、息管理系统中的应用 J.电脑编程技巧与维护,2022(11):82-85.4 李银,伊永菊.基于 HIS 系统的手术患者预住院解决方案J.现代医院,2022,22(10):1551-1553.5 KLINGERMAN S.Top Five Reasons to Use an Oracle DatabaseJ.Database Trends and Applications,2020,34(6):34-35.6 王伟伟,刘璘,巩蕾.数据阻塞监控在医院信息化管理中的研究分析 J.电脑编程技巧与维护,2015(18):64-65.7 姜文,刘立康.Oracle 数据库死锁问题研究 J.计算机技术与发
30、展,2014,24(3):97-101.8 王志国,周笑宇,苏仕斌.Oracle 数据库锁的研究 J.电子技术与软件工程,2021(11):165-166.9 唐显岁.HIS 系统 SQL Server 数据库死锁问题的分析与解决 J.电脑知识与技术,2023,19(9):69-71.10 李训栋,崔琦,陈豪.基于 C/S 架构的医院信息管理系统优化设计 J.电子技术与软件工程,2022(17):173-177.11 KLINGERMAN S.Oracles Data Management StrategyJ.Database Trends and Applications,2021,35(3
31、):42-43.12 粟林,李拓颖,赖翔宇,等.住院药房药品调剂流程信息化优化实践 J.中国药房,2022,33(24):3045-3048.13 时昕.基于 TiDB 数据库事务处理技术研究与实现 D.成都:电子科技大学,2022.14 阎焯.试析应用数据库的管理与维护 J.电脑编程技巧与维护,2021(12):71-72,106.15 杨龙.Web 服务器的 IIS 架构解析 J.电脑知识与技术,2017,13(14):35-36.16 刘丹,任浩然.数据库大数据量存储结构研究 J.无线互联科技,2021,18(10):107-108.收稿日期:2023-03-27 修回日期:2023-09-12(编辑:耿俊超)Chinese Journal of Health Informatics and Management,October 2023,Vol.20,No.5 中国卫生信息管理杂志2023年10月第20卷第5期