占亮亮,周錫瑯
(國(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)行狀況,通過(guò)對(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í)施西部大開(kāi)發(fā)、“西電東送”戰(zhàn)略的標(biāo)志性工程,位于云南省西部南澗縣與鳳慶縣交界的瀾滄江中游河段,系瀾滄江中下游河段規(guī)劃的八個(gè)梯級(jí)中的第二級(jí)。工程屬一等大(1)型工程,以發(fā)電為主,兼有防洪、灌溉、養(yǎng)殖和旅游等綜合利用效益。樞紐工程由混凝土雙曲拱壩(壩高294.5 m)、壩后水墊塘及二道壩、左岸泄洪洞及右岸地下引水發(fā)電系統(tǒng)組成。水庫(kù)總庫(kù)容為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)的各類(lèi)監(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千萬(wàn)條。以每個(gè)測(cè)點(diǎn)平均每天2-3條的數(shù)據(jù)計(jì)算,一年大概有近1千萬(wàn)條數(shù)據(jù)需要存儲(chǔ)入庫(kù)。
由于系統(tǒng)測(cè)點(diǎn)之多,數(shù)據(jù)量之大,導(dǎo)致工程安全監(jiān)測(cè)自動(dòng)化系統(tǒng)運(yùn)行緩慢。日常使用系統(tǒng)進(jìn)行數(shù)據(jù)查詢(xún)、成果分析和數(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ù)查詢(xún)、成果分析和數(shù)據(jù)輸出效率以及系統(tǒng)后臺(tái)性能進(jìn)行優(yōu)化。
具體需要優(yōu)化的內(nèi)容包括:提高數(shù)據(jù)表格查詢(xún)速度、提高過(guò)程線查詢(xún)速度、提高報(bào)表查詢(xún)速度、提高前臺(tái)涉及數(shù)據(jù)查詢(xún)業(yè)務(wù)應(yīng)用的速度、提高后臺(tái)涉及數(shù)據(jù)查詢(xún)的接口函數(shù)速度。具體優(yōu)化效率目標(biāo)見(jiàn)表1。
根據(jù)前面提出的優(yōu)化目標(biāo)及要求,需要對(duì)系統(tǒng)應(yīng)用進(jìn)行全面分析。通常這種造成應(yīng)用程序運(yùn)行緩慢的原因,主要可以從應(yīng)用程序自身問(wèn)題、數(shù)據(jù)庫(kù)問(wèn)題和硬件設(shè)備問(wèn)題去查找分析。根據(jù)系統(tǒng)運(yùn)行現(xiàn)狀初步分析及以往經(jīng)驗(yàn),首先排除硬件設(shè)備的問(wèn)題,重點(diǎn)放在應(yīng)用程序和數(shù)據(jù)庫(kù)性能兩方面問(wèn)題查找。
表1 優(yōu)化效率目標(biāo)表Table 1 Goals of the optimized efficiency
通過(guò)對(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)見(jiàn)圖1。
圖1 系統(tǒng)功能運(yùn)行結(jié)構(gòu)圖Fig.1 The functional structure of the system
通過(guò)對(duì)輸出的各功能節(jié)點(diǎn)耗時(shí)情況進(jìn)行分析,發(fā)現(xiàn)系統(tǒng)主要在數(shù)據(jù)表查詢(xún)耗時(shí)較長(zhǎng),其中耗時(shí)長(zhǎng)的部分主要是在ADO(數(shù)據(jù)庫(kù)訪問(wèn)組件)訪問(wèn)數(shù)據(jù)庫(kù)查詢(xún)數(shù)據(jù)的過(guò)程。耗時(shí)分析見(jiàn)圖2。
為了檢查是否是ADO數(shù)據(jù)訪問(wèn)組件造成的長(zhǎng)耗時(shí),通過(guò)SQL Server自帶的查詢(xún)分析器進(jìn)行數(shù)據(jù)查詢(xún)分析測(cè)試,發(fā)現(xiàn)比前面測(cè)試的快一些,但耗時(shí)也非常長(zhǎng)。進(jìn)一步分析發(fā)現(xiàn),測(cè)值數(shù)據(jù)表中的數(shù)據(jù)非常龐大,有近4千萬(wàn)的數(shù)據(jù)。單表4千萬(wàn)的數(shù)據(jù)非常大,查詢(xún)效率慢也可想而之。根據(jù)以往經(jīng)驗(yàn)分析,單表的數(shù)據(jù)量超過(guò)300萬(wàn)條(這個(gè)數(shù)據(jù)會(huì)根據(jù)硬件的不同而會(huì)有所不同)可能會(huì)影響數(shù)據(jù)查詢(xún)速度。應(yīng)用程序中也有一些不必要的查詢(xún)開(kāi)銷(xiāo)和SQL語(yǔ)句可以?xún)?yōu)化。綜上分析,需要對(duì)應(yīng)用程序進(jìn)行優(yōu)化,重點(diǎn)需要對(duì)測(cè)量數(shù)據(jù)表進(jìn)行優(yōu)化處理。
圖2 數(shù)據(jù)查詢(xún)耗時(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ù)庫(kù)優(yōu)化。
3.1 應(yīng)用程序優(yōu)化方案
(1)批量查詢(xún)測(cè)點(diǎn)信息,將原來(lái)單條測(cè)點(diǎn)信息查詢(xún)的代碼改為多點(diǎn)批量查詢(xún)。
(2)限定特征值測(cè)點(diǎn)查詢(xún)范圍,原來(lái)時(shí)間選擇框默認(rèn)打開(kāi)時(shí)會(huì)查詢(xún)系統(tǒng)所有測(cè)值的最大最小時(shí)間,改為按實(shí)際需要查詢(xún)最大最小時(shí)間,只當(dāng)選擇“全部”時(shí)才查詢(xún)當(dāng)前傳入的測(cè)點(diǎn)時(shí)間范圍,以提高用戶(hù)體驗(yàn)。
(3)SQL查詢(xún)語(yǔ)句優(yōu)化,按照SQL查詢(xún)語(yǔ)句優(yōu)化標(biāo)準(zhǔn),比如原來(lái)數(shù)據(jù)查詢(xún)用到“in”查詢(xún),拆為“=”查詢(xún),包括一些嵌套查詢(xún)等。
3.2 數(shù)據(jù)庫(kù)優(yōu)化方案
通過(guò)分析測(cè)值數(shù)據(jù)表數(shù)據(jù)發(fā)現(xiàn),測(cè)值記錄數(shù)約為4千萬(wàn)條,數(shù)據(jù)空間約5G,索引空間約10G。因此,需要對(duì)數(shù)據(jù)進(jìn)行拆分表存儲(chǔ),通過(guò)拆分將原來(lái)大數(shù)據(jù)表拆分成多張小的子表。拆分表的方式有以下兩種。
3.2.1 數(shù)據(jù)表拆子表方式
原來(lái)數(shù)據(jù)存儲(chǔ)在一張表中,數(shù)據(jù)非常龐大,需要將原來(lái)數(shù)據(jù)表分成多張小的子表(DataMea1, DataMea3,DataMea3,DataMeaN…),然后通過(guò)視圖方式將這些表組合在一起。這種方式將原來(lái)在一張大表中的查詢(xún)操作分擔(dān)到每張小的子表中,能分擔(dān)大表的檢索壓力,但它還是必須遍歷每張子表,并將數(shù)據(jù)組裝在一起,效果可能并不會(huì)提高太多,而且對(duì)數(shù)據(jù)庫(kù)維護(hù)工作量較大(需要在視圖中創(chuàng)建“增”、“刪”、“改”觸發(fā)器),因此,還需要用數(shù)據(jù)表分區(qū)的方式。
3.2.2 數(shù)據(jù)表分區(qū)方式
為了滿足非常大的數(shù)據(jù)庫(kù)的管理,需要?jiǎng)?chuàng)建和使用分區(qū)表和分區(qū)索引,分區(qū)表允許將數(shù)據(jù)分成分區(qū)甚至子分區(qū)的更小的、更好管理的塊。每個(gè)分區(qū)可以單獨(dú)管理,可以不依賴(lài)其他分區(qū)而單獨(dú)發(fā)揮作用,因此可以提供更有利于可用性和性能的結(jié)構(gòu)。SQL Server企業(yè)版自帶數(shù)據(jù)庫(kù)文件分組和數(shù)據(jù)表分區(qū)功能,通過(guò)SQL Server企業(yè)版的表分區(qū)功能,將原數(shù)據(jù)表通過(guò)分區(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ù)查詢(xún)時(shí)可能會(huì)進(jìn)行1天、1年或多年的查詢(xún),查詢(xún)時(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ù)庫(kù)結(jié)構(gòu)見(jiàn)圖3。
圖3 數(shù)據(jù)庫(kù)分區(qū)后結(jié)構(gòu)Fig.3 The structure of the database after partition
4.1 測(cè)試環(huán)境
(1)數(shù)據(jù)庫(kù)安裝在普通臺(tái)式機(jī)上,計(jì)算機(jī)硬件及軟件配置如下:
CPU:Intel(R)Xeon(R)1.86GHz
內(nèi)存:2GB
操作系統(tǒng):Windows Server 2003
數(shù)據(jù)庫(kù):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ù)庫(kù):SQL Server 2005 Enterprise Edition
在數(shù)據(jù)庫(kù)機(jī)器中安裝“安全監(jiān)測(cè)系統(tǒng)”所需數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)按前面設(shè)計(jì)的數(shù)據(jù)表分區(qū)方式創(chuàng)建,并將原來(lái)數(shù)據(jù)導(dǎo)入到新的分區(qū)庫(kù)中。創(chuàng)建完成后的數(shù)據(jù)庫(kù)文件分組結(jié)果見(jiàn)圖4。
4.2 測(cè)試內(nèi)容
參照前面的系統(tǒng)分析和優(yōu)化目標(biāo),需要對(duì)原來(lái)數(shù)據(jù)庫(kù)和新的分區(qū)數(shù)據(jù)庫(kù)分別進(jìn)行測(cè)試,本次測(cè)試功能模塊主要有以下幾項(xiàng):
(1)單點(diǎn)過(guò)程線,查詢(xún)單點(diǎn)過(guò)程線“C4-A15-PL-05”1天、1年和所有數(shù)據(jù),計(jì)算查詢(xún)時(shí)間。
(2)多點(diǎn)過(guò)程線,查詢(xún)多點(diǎn)過(guò)程線“29號(hào)壩段1090以下溫度”的1天、1年和所有數(shù)據(jù),計(jì)算查詢(xún)時(shí)間。
圖4 數(shù)據(jù)表文件分組結(jié)果圖Fig.4 Groups of the data files
(3)單點(diǎn)數(shù)據(jù)表格,查詢(xún)單點(diǎn)表格“C4-A15-PL-05”的1天、1年和所有數(shù)據(jù),計(jì)算查詢(xún)時(shí)間。
(4)多點(diǎn)數(shù)據(jù)表格,查詢(xún)多點(diǎn)表格“C4-A15-C-01到C4-A15-C-07”的1天、1年和所有數(shù)據(jù),計(jì)算查詢(xún)時(shí)間。
(5)月報(bào)表,查詢(xún)“壩基多點(diǎn)位移計(jì)”2012年1月報(bào)表,計(jì)算查詢(xún)時(shí)間。
(6)年報(bào)表,查詢(xún)“水平位移統(tǒng)計(jì)表”2012年報(bào)表,計(jì)算查詢(xún)時(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ù)庫(kù)進(jìn)行測(cè)試,然后再對(duì)分區(qū)數(shù)據(jù)庫(kù)進(jìn)行測(cè)試。每個(gè)功能模塊都進(jìn)行4
表2 耗時(shí)測(cè)試結(jié)果表Table 2 Result of the time-consuming test
次以上的測(cè)試,且每次測(cè)試都清除數(shù)據(jù)庫(kù)緩存,確保測(cè)試結(jié)果的真實(shí)性和可用性,測(cè)試完后取耗時(shí)第二長(zhǎng)的時(shí)間作為樣本。
4.4 測(cè)試結(jié)果
通過(guò)設(shè)計(jì)的優(yōu)化方案及對(duì)照測(cè)試方法和測(cè)試內(nèi)容,各功能模塊測(cè)試后,計(jì)算每個(gè)功能模塊的耗時(shí)情況,耗時(shí)測(cè)試結(jié)果見(jiàn)表2。從表2可以看出,通過(guò)分區(qū)后的數(shù)據(jù)查詢(xún)速度較以前有巨大的提高,且能滿足優(yōu)化目標(biāo)。
4.5 總結(jié)與建議
經(jīng)過(guò)對(duì)應(yīng)用程序及數(shù)據(jù)庫(kù)的分區(qū)優(yōu)化,系統(tǒng)運(yùn)行速度較以前有較大提高,已能滿足提出的性能目標(biāo)要求。暫時(shí)測(cè)試的數(shù)據(jù)是5年4千萬(wàn)條左右,預(yù)計(jì)10年的數(shù)據(jù)在8千萬(wàn)條左右,通過(guò)數(shù)據(jù)分區(qū)存儲(chǔ)到多個(gè)文件中,系統(tǒng)運(yùn)行10年,每個(gè)分區(qū)數(shù)據(jù)在500~600萬(wàn)條左右,暫時(shí)可以在單磁盤(pán)上進(jìn)行存儲(chǔ)。隨著以后數(shù)據(jù)不斷增長(zhǎng),數(shù)據(jù)庫(kù)的壓力會(huì)逐漸增大,如果出現(xiàn)壓力過(guò)大,可以增加磁盤(pán),將分區(qū)數(shù)據(jù)文件組分別存儲(chǔ)到不同的磁盤(pán)中,提高IO性能。 ■
[1]深入SQL Server 2008(第1版)[M].人民郵電出版社,2011.
[2]SQL Server 2008查詢(xún)性能優(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è)軟件研究與開(kāi)發(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