文/吳建
醫(yī)院數(shù)據(jù)庫的優(yōu)化和系統(tǒng)性能的提升
文/吳建
隨著醫(yī)院的發(fā)展,需要處理的數(shù)據(jù)量也在不斷增加,這對醫(yī)院的數(shù)據(jù)庫提出了更高的要求,為了滿足這一要求,醫(yī)院必須對其數(shù)據(jù)庫進行優(yōu)化,以提升系統(tǒng)的性能,提高數(shù)據(jù)處理效率,促進醫(yī)院的發(fā)展。本文將對醫(yī)院數(shù)據(jù)庫的優(yōu)化和系統(tǒng)性能的提升方案進行分析與探討,幫助醫(yī)院選擇最佳的優(yōu)化方案,提升系統(tǒng)性能,滿足醫(yī)院日益提高的數(shù)據(jù)處理要求。
醫(yī)院數(shù)據(jù)庫 系統(tǒng)性能
在目前的大部分醫(yī)院中,由于進行了多年的信息化建設(shè),已經(jīng)獲得了初步的成功。在原有的收費與結(jié)算信息化的基礎(chǔ)上,逐漸向著服務(wù)、醫(yī)療信息化的方向發(fā)展。而隨著醫(yī)院的信息化水平不斷提高,其積累的數(shù)據(jù)量也會越來越大,這些數(shù)據(jù)的處理為數(shù)據(jù)庫系統(tǒng)帶來了巨大的負擔,已經(jīng)開始影響醫(yī)院信息化建設(shè)的進行。所以,醫(yī)院必須重視數(shù)據(jù)庫的優(yōu)化,不斷提升系統(tǒng)性能,促進醫(yī)院的發(fā)展。
自發(fā)展信息化以來,大部分醫(yī)院的數(shù)據(jù)庫已經(jīng)運行了很長時間,尤其是電子病歷的應用,使數(shù)據(jù)庫內(nèi)臨床診療數(shù)據(jù)不斷增加,使數(shù)據(jù)庫變得更加臃腫,對業(yè)務(wù)處理的效率產(chǎn)生了顯著的影響。與此同時,數(shù)據(jù)庫還需要應對大量的數(shù)據(jù)查詢與統(tǒng)計,在運行過程中容易出現(xiàn)死鎖或阻塞的情況,在對醫(yī)院的運行造成了一定的影響。
在對數(shù)據(jù)庫進行維護時,如果數(shù)據(jù)庫的容量大幅度增加,就會造成數(shù)據(jù)的備份與恢復時間延長,業(yè)務(wù)處理受到的影響也就越大。與此同時,軟件的表結(jié)構(gòu)修改需在針對有百萬條以上記錄的表時,容易造成表鎖定,導致業(yè)務(wù)系統(tǒng)無法訪問,影響業(yè)務(wù)的正常辦理。
為了解決醫(yī)院數(shù)據(jù)量大幅度增加帶來的運行速度降低的問題,大部分醫(yī)院采取了升級服務(wù)器的方式,將PC服務(wù)器升級為小型機服務(wù)器,改善服務(wù)器的處理性能,提高系統(tǒng)運行速度。這種方式能夠在短時間內(nèi)緩解數(shù)據(jù)量增加的問題,但無法從根本上解決這一問題。
為了解決由于數(shù)據(jù)量不斷增加而影響數(shù)據(jù)處理效率,我們可以采用通過硬件與軟件來分隔不同業(yè)務(wù)處理間產(chǎn)生的影響,將醫(yī)院的業(yè)務(wù)分為兩個類型:
(1)醫(yī)院的在線業(yè)務(wù),其中包括收費、結(jié)算、病例、醫(yī)囑等,這些任務(wù)是醫(yī)院最核心的業(yè)務(wù),所有工作人員的工作都需要以此為基礎(chǔ),必須保證其能夠高效的運行。
(2)對數(shù)據(jù)進行查詢與統(tǒng)計,這類業(yè)務(wù)是職能科室在每個月需要完成的,需要從數(shù)據(jù)庫中直接獲取數(shù)據(jù),并進行大量的統(tǒng)計工作。我們可以為兩個類型的業(yè)務(wù)分配各自獨立的數(shù)據(jù)庫與服務(wù)器,確保二者都能夠正常運行。在確定硬件提升方案后,我們可以考慮采用實時事務(wù)復制技術(shù)來提高軟件性能,做到數(shù)據(jù)的及時同步,在用戶操作后,查詢庫中就可以及時的反映,實現(xiàn)業(yè)務(wù)與查詢數(shù)據(jù)庫的徹底分離。與此同時,還能夠?qū)崿F(xiàn)在特殊情況下用查詢數(shù)據(jù)庫作為應急服務(wù)器。
在醫(yī)院的數(shù)據(jù)庫中,業(yè)務(wù)的變化會產(chǎn)生更多的新需求,數(shù)據(jù)庫的表會發(fā)生結(jié)構(gòu)上的變化,經(jīng)常會出現(xiàn)業(yè)務(wù)數(shù)據(jù)的表結(jié)構(gòu)與查詢數(shù)據(jù)不一致的現(xiàn)象,無法正常運行。為了解決這一問題,我們可以采用數(shù)據(jù)庫結(jié)構(gòu)變化跟蹤程序,在業(yè)務(wù)數(shù)據(jù)庫的表發(fā)生結(jié)構(gòu)變化時,程序能夠?qū)ψ兓M行自動跟蹤,同時對查詢數(shù)據(jù)庫的表結(jié)構(gòu)進行更新。具體的操作方法如下:拷貝業(yè)務(wù)數(shù)據(jù)庫中的表結(jié)構(gòu),再啟動表結(jié)構(gòu)監(jiān)控伺服器,對比已拷貝的表結(jié)構(gòu)與業(yè)務(wù)數(shù)據(jù)庫的表結(jié)構(gòu),如果存在變動,就會產(chǎn)生表結(jié)構(gòu)變動的DDL,將DDL傳遞到查詢數(shù)據(jù)庫。
為了有效的減少業(yè)務(wù)數(shù)據(jù)庫中的數(shù)據(jù)量,提升業(yè)務(wù)處理效率,必須要對業(yè)務(wù)數(shù)據(jù)庫中的數(shù)據(jù)進行定期的轉(zhuǎn)儲與刪除,以確保業(yè)務(wù)數(shù)據(jù)量的恒定。但是,查詢數(shù)據(jù)庫中需要保存自數(shù)據(jù)庫建立起的全部數(shù)據(jù),無法實現(xiàn)業(yè)務(wù)數(shù)據(jù)的轉(zhuǎn)儲與刪除。所以,我們必須實現(xiàn)在復制狀態(tài)下對業(yè)務(wù)數(shù)據(jù)進行刪除,以保證查詢數(shù)據(jù)可的完整性。根據(jù)實時事務(wù)復制的規(guī)則,相同的操作會傳遞至查詢數(shù)據(jù)庫中,刪除相應的數(shù)據(jù)。為了解決這一問題,我們可以在業(yè)務(wù)數(shù)據(jù)庫與查詢數(shù)據(jù)庫中建立一個表SCBM,用于存放刪除的表名。在進行初始化后,建立這個表,并在其中插入NAME=’NONE’的記錄。在復制定義后,可以利用復制程序在業(yè)務(wù)與查詢數(shù)據(jù)庫中為所有表建立全部的刪除與存儲過程。如果操作是正常的業(yè)務(wù)刪除,查詢數(shù)據(jù)庫中的SCBM表就不會記錄,查詢數(shù)據(jù)庫就會進行刪除。如果操作是正常的業(yè)務(wù)刪除,查詢數(shù)據(jù)庫中的SCBM表就會記錄,查詢數(shù)據(jù)庫就不會進行刪除。
在復制訂閱系統(tǒng)的運行過程中,可能會受到不同因素的影響而造成復制或訂閱失敗,這些因素除了系統(tǒng)或硬件因素,大部分是軟件系統(tǒng)因素,因此,系統(tǒng)中需要實現(xiàn)實時監(jiān)控,以保證在問題發(fā)生時可以及時的發(fā)出警報并修正錯誤,防止產(chǎn)生更嚴重的損失。復制訂閱監(jiān)控程序通常作為伺服器在穩(wěn)定的客戶端上運行,定期對數(shù)據(jù)庫的復制進行檢測,一旦發(fā)現(xiàn)故障,就會立即發(fā)出警報,停止復制,等待管理員處理。如果在72小時后仍無人處理,監(jiān)控程序就會按照設(shè)定好的方法自行處理,防止復制訂閱系統(tǒng)被SQLSERVER清除。
在性能提升方案啟用后,可能會發(fā)生故障,例如查詢服務(wù)不能正常啟動,復制系統(tǒng)故障等,一旦故障無法及時修復,需要重新設(shè)置復制的發(fā)布與訂閱,造成業(yè)務(wù)數(shù)據(jù)庫中的查詢不能正常進行,需要管理員通過控制臺完成調(diào)整,將業(yè)務(wù)與查詢數(shù)據(jù)庫結(jié)合在一起,同時指向業(yè)務(wù)數(shù)據(jù)庫進行操作,確保正常的短期業(yè)務(wù)查詢不會受到影響。在故障解決后,一些數(shù)據(jù)無法從業(yè)務(wù)數(shù)據(jù)庫復制到查詢數(shù)據(jù)庫,導致查詢數(shù)據(jù)缺失,需要對查詢數(shù)據(jù)庫進行恢復,再利用控制臺把業(yè)務(wù)數(shù)據(jù)庫與查詢數(shù)據(jù)庫重新分開,系統(tǒng)修復。
[1]魏寧.探討醫(yī)院數(shù)據(jù)庫系統(tǒng)性能優(yōu)化[J].電腦編程技巧與維護,2011(20).
[2]丁銳.中小醫(yī)院數(shù)據(jù)中心服務(wù)器群邏輯架構(gòu)解決方案[J].中國數(shù)字醫(yī)學,2015(10).
[3]賈末,王永剛,沈韜,張穎琦.醫(yī)院信息系統(tǒng)性能優(yōu)化策略探討[J].醫(yī)學信息學雜志,2014(09).
作者單位麗水市人民醫(yī)院 浙江省麗水市 323000
姓名(1990-),男,浙江省麗水市人。大學本科學歷。助理工程師。主要研究方向為系統(tǒng)集成、數(shù)據(jù)庫建設(shè)、數(shù)據(jù)挖掘。