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