占亮亮,周錫瑯
(國(guó)網(wǎng)電力科學(xué)研究院南京南瑞集團(tuán)公司,江蘇南京,210003)
小灣水電站工程安全監(jiān)測(cè)自動(dòng)化系統(tǒng)性能優(yōu)化
占亮亮,周錫瑯
(國(guó)網(wǎng)電力科學(xué)研究院南京南瑞集團(tuán)公司,江蘇南京,210003)
介紹了小灣水電站工程安全監(jiān)測(cè)自動(dòng)化系統(tǒng)的當(dāng)前運(yùn)行狀況,通過對(duì)系統(tǒng)運(yùn)行緩慢進(jìn)行原因分析,提出了系統(tǒng)優(yōu)化方案,并進(jìn)行實(shí)施和測(cè)試。優(yōu)化后的系統(tǒng)運(yùn)行速度較優(yōu)化前有較大提高,且能達(dá)到預(yù)先提出的性能目標(biāo)。關(guān)鍵詞:性能優(yōu)化;數(shù)據(jù)分區(qū);安全監(jiān)測(cè)
小灣水電站工程是國(guó)家實(shí)施西部大開發(fā)、“西電東送”戰(zhàn)略的標(biāo)志性工程,位于云南省西部南澗縣與鳳慶縣交界的瀾滄江中游河段,系瀾滄江中下游河段規(guī)劃的八個(gè)梯級(jí)中的第二級(jí)。工程屬一等大(1)型工程,以發(fā)電為主,兼有防洪、灌溉、養(yǎng)殖和旅游等綜合利用效益。樞紐工程由混凝土雙曲拱壩(壩高294.5 m)、壩后水墊塘及二道壩、左岸泄洪洞及右岸地下引水發(fā)電系統(tǒng)組成。水庫總庫容為149.14億m3,電站總裝機(jī)容量4 200 MW。
小灣水電站樞紐區(qū)工程安全監(jiān)測(cè)自動(dòng)化系統(tǒng)由南京南瑞集團(tuán)公司實(shí)施,目前包括左岸拱壩、右岸拱壩、左岸壩肩抗力體、右岸壩肩抗力體、地下引水發(fā)電系統(tǒng)洞室群、高邊坡監(jiān)測(cè)等6個(gè)區(qū)域子系統(tǒng)。其中納入自動(dòng)化系統(tǒng)的各類監(jiān)測(cè)儀器近6 000支,自動(dòng)化測(cè)點(diǎn)8 463個(gè),人工及虛擬測(cè)點(diǎn)3 260個(gè),測(cè)點(diǎn)總數(shù)共計(jì)11 723個(gè)。數(shù)據(jù)時(shí)間從2008年12月-2013年11月,約5年的測(cè)值記錄總數(shù)約4千萬條。以每個(gè)測(cè)點(diǎn)平均每天2-3條的數(shù)據(jù)計(jì)算,一年大概有近1千萬條數(shù)據(jù)需要存儲(chǔ)入庫。
由于系統(tǒng)測(cè)點(diǎn)之多,數(shù)據(jù)量之大,導(dǎo)致工程安全監(jiān)測(cè)自動(dòng)化系統(tǒng)運(yùn)行緩慢。日常使用系統(tǒng)進(jìn)行數(shù)據(jù)查詢、成果分析和數(shù)據(jù)輸出時(shí),速度慢、耗時(shí)長(zhǎng),嚴(yán)重影響系統(tǒng)可用性和日常工作。因此,需要對(duì)系統(tǒng)性能進(jìn)行全面檢測(cè)分析,并進(jìn)行相關(guān)的性能優(yōu)化。
本著系統(tǒng)運(yùn)行可靠性、高效性和日常工作效率的需要,主要對(duì)日常數(shù)據(jù)查詢、成果分析和數(shù)據(jù)輸出效率以及系統(tǒng)后臺(tái)性能進(jìn)行優(yōu)化。
具體需要優(yōu)化的內(nèi)容包括:提高數(shù)據(jù)表格查詢速度、提高過程線查詢速度、提高報(bào)表查詢速度、提高前臺(tái)涉及數(shù)據(jù)查詢業(yè)務(wù)應(yīng)用的速度、提高后臺(tái)涉及數(shù)據(jù)查詢的接口函數(shù)速度。具體優(yōu)化效率目標(biāo)見表1。
根據(jù)前面提出的優(yōu)化目標(biāo)及要求,需要對(duì)系統(tǒng)應(yīng)用進(jìn)行全面分析。通常這種造成應(yīng)用程序運(yùn)行緩慢的原因,主要可以從應(yīng)用程序自身問題、數(shù)據(jù)庫問題和硬件設(shè)備問題去查找分析。根據(jù)系統(tǒng)運(yùn)行現(xiàn)狀初步分析及以往經(jīng)驗(yàn),首先排除硬件設(shè)備的問題,重點(diǎn)放在應(yīng)用程序和數(shù)據(jù)庫性能兩方面問題查找。
表1 優(yōu)化效率目標(biāo)表Table 1 Goals of the optimized efficiency
通過對(duì)系統(tǒng)應(yīng)用的詳細(xì)分析,找出系統(tǒng)各關(guān)鍵功能節(jié)點(diǎn)以及可能耗時(shí)的代碼位置,然后在這些關(guān)鍵位置加入調(diào)試代碼,并輸出每個(gè)功能節(jié)點(diǎn)的耗時(shí)情況。系統(tǒng)功能運(yùn)行結(jié)構(gòu)見圖1。
圖1 系統(tǒng)功能運(yùn)行結(jié)構(gòu)圖Fig.1 The functional structure of the system
通過對(duì)輸出的各功能節(jié)點(diǎn)耗時(shí)情況進(jìn)行分析,發(fā)現(xiàn)系統(tǒng)主要在數(shù)據(jù)表查詢耗時(shí)較長(zhǎng),其中耗時(shí)長(zhǎng)的部分主要是在ADO(數(shù)據(jù)庫訪問組件)訪問數(shù)據(jù)庫查詢數(shù)據(jù)的過程。耗時(shí)分析見圖2。
為了檢查是否是ADO數(shù)據(jù)訪問組件造成的長(zhǎng)耗時(shí),通過SQL Server自帶的查詢分析器進(jìn)行數(shù)據(jù)查詢分析測(cè)試,發(fā)現(xiàn)比前面測(cè)試的快一些,但耗時(shí)也非常長(zhǎng)。進(jìn)一步分析發(fā)現(xiàn),測(cè)值數(shù)據(jù)表中的數(shù)據(jù)非常龐大,有近4千萬的數(shù)據(jù)。單表4千萬的數(shù)據(jù)非常大,查詢效率慢也可想而之。根據(jù)以往經(jīng)驗(yàn)分析,單表的數(shù)據(jù)量超過300萬條(這個(gè)數(shù)據(jù)會(huì)根據(jù)硬件的不同而會(huì)有所不同)可能會(huì)影響數(shù)據(jù)查詢速度。應(yīng)用程序中也有一些不必要的查詢開銷和SQL語句可以優(yōu)化。綜上分析,需要對(duì)應(yīng)用程序進(jìn)行優(yōu)化,重點(diǎn)需要對(duì)測(cè)量數(shù)據(jù)表進(jìn)行優(yōu)化處理。
圖2 數(shù)據(jù)查詢耗時(shí)分析Fig.2 Analysis of the time consumed in data query
根據(jù)系統(tǒng)分析結(jié)果,確定了主要需要優(yōu)化的內(nèi)容,包括應(yīng)用程序優(yōu)化和數(shù)據(jù)庫優(yōu)化。
3.1 應(yīng)用程序優(yōu)化方案
(1)批量查詢測(cè)點(diǎn)信息,將原來單條測(cè)點(diǎn)信息查詢的代碼改為多點(diǎn)批量查詢。
(2)限定特征值測(cè)點(diǎn)查詢范圍,原來時(shí)間選擇框默認(rèn)打開時(shí)會(huì)查詢系統(tǒng)所有測(cè)值的最大最小時(shí)間,改為按實(shí)際需要查詢最大最小時(shí)間,只當(dāng)選擇“全部”時(shí)才查詢當(dāng)前傳入的測(cè)點(diǎn)時(shí)間范圍,以提高用戶體驗(yàn)。
(3)SQL查詢語句優(yōu)化,按照SQL查詢語句優(yōu)化標(biāo)準(zhǔn),比如原來數(shù)據(jù)查詢用到“in”查詢,拆為“=”查詢,包括一些嵌套查詢等。
3.2 數(shù)據(jù)庫優(yōu)化方案
通過分析測(cè)值數(shù)據(jù)表數(shù)據(jù)發(fā)現(xiàn),測(cè)值記錄數(shù)約為4千萬條,數(shù)據(jù)空間約5G,索引空間約10G。因此,需要對(duì)數(shù)據(jù)進(jìn)行拆分表存儲(chǔ),通過拆分將原來大數(shù)據(jù)表拆分成多張小的子表。拆分表的方式有以下兩種。
3.2.1 數(shù)據(jù)表拆子表方式
原來數(shù)據(jù)存儲(chǔ)在一張表中,數(shù)據(jù)非常龐大,需要將原來數(shù)據(jù)表分成多張小的子表(DataMea1, DataMea3,DataMea3,DataMeaN…),然后通過視圖方式將這些表組合在一起。這種方式將原來在一張大表中的查詢操作分擔(dān)到每張小的子表中,能分擔(dān)大表的檢索壓力,但它還是必須遍歷每張子表,并將數(shù)據(jù)組裝在一起,效果可能并不會(huì)提高太多,而且對(duì)數(shù)據(jù)庫維護(hù)工作量較大(需要在視圖中創(chuàng)建“增”、“刪”、“改”觸發(fā)器),因此,還需要用數(shù)據(jù)表分區(qū)的方式。
3.2.2 數(shù)據(jù)表分區(qū)方式
為了滿足非常大的數(shù)據(jù)庫的管理,需要?jiǎng)?chuàng)建和使用分區(qū)表和分區(qū)索引,分區(qū)表允許將數(shù)據(jù)分成分區(qū)甚至子分區(qū)的更小的、更好管理的塊。每個(gè)分區(qū)可以單獨(dú)管理,可以不依賴其他分區(qū)而單獨(dú)發(fā)揮作用,因此可以提供更有利于可用性和性能的結(jié)構(gòu)。SQL Server企業(yè)版自帶數(shù)據(jù)庫文件分組和數(shù)據(jù)表分區(qū)功能,通過SQL Server企業(yè)版的表分區(qū)功能,將原數(shù)據(jù)表通過分區(qū)函數(shù)進(jìn)行分區(qū)并存儲(chǔ)到不同的文件組中。由于數(shù)據(jù)索引文件較大,需要將索引文件和數(shù)據(jù)文件一同分區(qū)。系統(tǒng)共有測(cè)點(diǎn)11 723個(gè),每個(gè)測(cè)點(diǎn)每天有2~3條測(cè)值數(shù)據(jù),數(shù)據(jù)查詢時(shí)可能會(huì)進(jìn)行1天、1年或多年的查詢,查詢時(shí)長(zhǎng)不固定。如果按數(shù)據(jù)時(shí)間進(jìn)行分區(qū)并不合適,需要按測(cè)點(diǎn)編號(hào)及每個(gè)區(qū)500個(gè)測(cè)點(diǎn)進(jìn)行分區(qū)。
分區(qū)函數(shù)及方案如下:
分區(qū)后的數(shù)據(jù)庫結(jié)構(gòu)見圖3。
圖3 數(shù)據(jù)庫分區(qū)后結(jié)構(gòu)Fig.3 The structure of the database after partition
4.1 測(cè)試環(huán)境
(1)數(shù)據(jù)庫安裝在普通臺(tái)式機(jī)上,計(jì)算機(jī)硬件及軟件配置如下:
CPU:Intel(R)Xeon(R)1.86GHz
內(nèi)存:2GB
操作系統(tǒng):Windows Server 2003
數(shù)據(jù)庫:SQL Server 2005 Enterprise Edition
(2)安全監(jiān)測(cè)系統(tǒng)軟件安裝筆記本上,計(jì)算機(jī)硬件及軟件配置如下:
CPU:Intel(R)Core(TM)2 Duo 1.80GHz
內(nèi)存:2GB
操作系統(tǒng):Windows XP
數(shù)據(jù)庫:SQL Server 2005 Enterprise Edition
在數(shù)據(jù)庫機(jī)器中安裝“安全監(jiān)測(cè)系統(tǒng)”所需數(shù)據(jù)庫,數(shù)據(jù)庫按前面設(shè)計(jì)的數(shù)據(jù)表分區(qū)方式創(chuàng)建,并將原來數(shù)據(jù)導(dǎo)入到新的分區(qū)庫中。創(chuàng)建完成后的數(shù)據(jù)庫文件分組結(jié)果見圖4。
4.2 測(cè)試內(nèi)容
參照前面的系統(tǒng)分析和優(yōu)化目標(biāo),需要對(duì)原來數(shù)據(jù)庫和新的分區(qū)數(shù)據(jù)庫分別進(jìn)行測(cè)試,本次測(cè)試功能模塊主要有以下幾項(xiàng):
(1)單點(diǎn)過程線,查詢單點(diǎn)過程線“C4-A15-PL-05”1天、1年和所有數(shù)據(jù),計(jì)算查詢時(shí)間。
(2)多點(diǎn)過程線,查詢多點(diǎn)過程線“29號(hào)壩段1090以下溫度”的1天、1年和所有數(shù)據(jù),計(jì)算查詢時(shí)間。
圖4 數(shù)據(jù)表文件分組結(jié)果圖Fig.4 Groups of the data files
(3)單點(diǎn)數(shù)據(jù)表格,查詢單點(diǎn)表格“C4-A15-PL-05”的1天、1年和所有數(shù)據(jù),計(jì)算查詢時(shí)間。
(4)多點(diǎn)數(shù)據(jù)表格,查詢多點(diǎn)表格“C4-A15-C-01到C4-A15-C-07”的1天、1年和所有數(shù)據(jù),計(jì)算查詢時(shí)間。
(5)月報(bào)表,查詢“壩基多點(diǎn)位移計(jì)”2012年1月報(bào)表,計(jì)算查詢時(shí)間。
(6)年報(bào)表,查詢“水平位移統(tǒng)計(jì)表”2012年報(bào)表,計(jì)算查詢時(shí)間。
4.3 測(cè)試方法
根據(jù)系統(tǒng)分析及測(cè)試內(nèi)容,在各功能模塊長(zhǎng)耗時(shí)的位置增加時(shí)間輸出調(diào)試代碼,計(jì)算每個(gè)測(cè)試內(nèi)容的耗時(shí)情況。首先對(duì)原始數(shù)據(jù)庫進(jìn)行測(cè)試,然后再對(duì)分區(qū)數(shù)據(jù)庫進(jìn)行測(cè)試。每個(gè)功能模塊都進(jìn)行4
表2 耗時(shí)測(cè)試結(jié)果表Table 2 Result of the time-consuming test
次以上的測(cè)試,且每次測(cè)試都清除數(shù)據(jù)庫緩存,確保測(cè)試結(jié)果的真實(shí)性和可用性,測(cè)試完后取耗時(shí)第二長(zhǎng)的時(shí)間作為樣本。
4.4 測(cè)試結(jié)果
通過設(shè)計(jì)的優(yōu)化方案及對(duì)照測(cè)試方法和測(cè)試內(nèi)容,各功能模塊測(cè)試后,計(jì)算每個(gè)功能模塊的耗時(shí)情況,耗時(shí)測(cè)試結(jié)果見表2。從表2可以看出,通過分區(qū)后的數(shù)據(jù)查詢速度較以前有巨大的提高,且能滿足優(yōu)化目標(biāo)。
4.5 總結(jié)與建議
經(jīng)過對(duì)應(yīng)用程序及數(shù)據(jù)庫的分區(qū)優(yōu)化,系統(tǒng)運(yùn)行速度較以前有較大提高,已能滿足提出的性能目標(biāo)要求。暫時(shí)測(cè)試的數(shù)據(jù)是5年4千萬條左右,預(yù)計(jì)10年的數(shù)據(jù)在8千萬條左右,通過數(shù)據(jù)分區(qū)存儲(chǔ)到多個(gè)文件中,系統(tǒng)運(yùn)行10年,每個(gè)分區(qū)數(shù)據(jù)在500~600萬條左右,暫時(shí)可以在單磁盤上進(jìn)行存儲(chǔ)。隨著以后數(shù)據(jù)不斷增長(zhǎng),數(shù)據(jù)庫的壓力會(huì)逐漸增大,如果出現(xiàn)壓力過大,可以增加磁盤,將分區(qū)數(shù)據(jù)文件組分別存儲(chǔ)到不同的磁盤中,提高IO性能。 ■
[1]深入SQL Server 2008(第1版)[M].人民郵電出版社,2011.
[2]SQL Server 2008查詢性能優(yōu)化(第1版)[M].人民郵電出版社,2010.
This paper introduced the current state of the automatic safety monitoring system at Xiaowan hydropower station and analyzed the cause reasons for slow operation.Further,the system optimization plan was proposed,then implementation as well as testing were carried out.After the optimization,oper?ating speed of the system was greatly improved and the goals advanced were achieved.
performance optimization;data partitioning;safety monitoring
TV736
B
1671-1092(2014)03-0015-04
2014-02-27
占亮亮(1981-),男,工程師,主要研究方向:水利水電行業(yè)軟件研究與開發(fā)。
Title:Performance optimization of the automatic safety monitoring system at Xiaowan hydropower sta?tion//by ZHAN Liang-liang and ZHOU Xi-lang//State Grid Electric Power Research Institute