劉麗娟,黃錦
(1.大連交通大學(xué) 軟件學(xué)院,遼寧 大連 116052; 2.大連華信計算機技術(shù)股份有限公司,遼寧 大連 116085)
OA系統(tǒng)性能優(yōu)化及提高數(shù)據(jù)檢索效率方法研究
劉麗娟1,黃錦2
(1.大連交通大學(xué) 軟件學(xué)院,遼寧 大連 116052; 2.大連華信計算機技術(shù)股份有限公司,遼寧 大連 116085)
針對項目管理系統(tǒng)中數(shù)據(jù)交錯導(dǎo)致數(shù)據(jù)檢索時間長,系統(tǒng)性能差的問題,提出兩個系統(tǒng)優(yōu)化的方案:添加索引和添加中間表.最終通過建立中間表,提前將有用數(shù)據(jù)存儲,使用時直接從中間表中檢索數(shù)據(jù),有效的降低檢索時間,提高系統(tǒng)運行效率.運用中間表的方式,對系統(tǒng)性能的提高在60%以上.
中間表;性能優(yōu)化;項目管理系統(tǒng)
隨著云計算、大數(shù)據(jù)等技術(shù)日益成熟,自動化管理開始大規(guī)模普及.本文在對大連某大型軟件外包企業(yè)進行實地考察后設(shè)計了一款基于自動化理念的項目管理系統(tǒng).應(yīng)用該系統(tǒng)可以實現(xiàn)高效、準確、便利的項目管理,但是在系統(tǒng)測試階段,該系統(tǒng)的部分功能檢索效率非常低.出現(xiàn)問題的主要原因是期望數(shù)據(jù)需要從多表中根據(jù)不同條件檢索獲得,導(dǎo)致在測試數(shù)據(jù)僅僅十條的情況下就達到14.79 s之久,結(jié)合企業(yè)實際數(shù)據(jù)更加龐大的實際情況,特對系統(tǒng)進行優(yōu)化處理.本文對優(yōu)化前后的系統(tǒng)性能進行了大量測試,通過對測試數(shù)據(jù)及圖標的分析,優(yōu)化后系統(tǒng)性能最終滿足開發(fā)要求.
1.1 系統(tǒng)介紹
本系統(tǒng)設(shè)計為軟件公司用自動化管理系統(tǒng),核心是項目管理模塊,管理模塊中任務(wù)分配功能和工資結(jié)算功能的性能明顯太差.任務(wù)分配功能是該系統(tǒng)中項目經(jīng)理級別的職工操作的功能,目的是檢索出自己項目組所有成員管理各成員的計劃,該檢索生成的數(shù)據(jù)源分為如下幾個方面:根據(jù)項目經(jīng)理的職工ID從項目信息表中檢索出對應(yīng)項目信息;根據(jù)項目組成員的職工ID從職工信息表檢索出職工信息;根據(jù)項目組成員的職工ID從計劃信息表檢索出對應(yīng)計劃信息;系統(tǒng)最終檢索后的數(shù)據(jù)顯示如圖1所示.
圖1 任務(wù)分配功能
1.2 檢索效率原因分析
優(yōu)化前的數(shù)據(jù)庫設(shè)計并沒有切實考慮到任務(wù)分配功能的實際操作,在項目信息表中添加PRO_STA_ID1~PRO_STA_IDN字段用來存儲項目組成員的職工ID,這樣的設(shè)計固然可以在添加組員的操作上方便對數(shù)據(jù)庫的操作,但是任務(wù)分配功能需要最終檢索出包括組員的計劃信息在內(nèi)的詳細信息,以優(yōu)化前的數(shù)據(jù)庫設(shè)計而言,系統(tǒng)需要在檢索出組員職工ID之后再次根據(jù)職工ID檢索計劃信息,企業(yè)實際情況而言,小型團隊可能體現(xiàn)不明顯,但是當遇到幾百人以上的大型項目,這種設(shè)計的缺點就會被無限放大.
在軟件開發(fā)中,客戶對系統(tǒng)的性能有很高的要求,大數(shù)據(jù)時代的到來,很多處理會涉及到龐大的數(shù)據(jù)量,在實際軟件項目的開發(fā)過程中,會有針對龐大數(shù)據(jù)量的性能測試.一般大型系統(tǒng),例如鐵路系統(tǒng),銀行系統(tǒng),都會有對應(yīng)的批處理.在針對企業(yè)、學(xué)校等OA類型的系統(tǒng)中,雖然限制于系統(tǒng)使用用戶數(shù)量,數(shù)據(jù)量一般不會達到十幾萬以上的級別,但是,這類OA系統(tǒng)中的檢索條件可能相對復(fù)雜,即使幾百條數(shù)據(jù),如果系統(tǒng)的處理不好,也會使系統(tǒng)性能達不到客戶要求,針對本OA系統(tǒng)出現(xiàn)的問題查找了相應(yīng)文獻.文獻[1]中系統(tǒng)分析了Oracle數(shù)據(jù)庫索引的特點,對使用SQL語句基于索引對數(shù)據(jù)庫的效率進行優(yōu)化的實現(xiàn)方法提出了幾點認識,并以自己的實際工作經(jīng)驗為例進行了一些新的探索和嘗試;文獻[2]中使用存儲過程可以優(yōu)化對數(shù)據(jù)庫的訪問,該文通過實例,較詳細地闡述了創(chuàng)建存儲過程及在ASP中調(diào)用存儲過程的方法.經(jīng)過研究討論之后,提出兩條可行性方案,方案一:利用索引提高檢索性能[3];方案二:添加中間表,降低數(shù)據(jù)檢索復(fù)雜度.但是該系統(tǒng)的數(shù)據(jù)庫在設(shè)計的時候?qū)γ總€表都設(shè)置了自增的主鍵,而性能不好的功能在從數(shù)據(jù)庫檢索數(shù)據(jù)時檢索條件基本都為主鍵檢索,討論之后發(fā)現(xiàn)就算再給其他列添加索引對系統(tǒng)性能的提高也并不明顯,最終本文選定方案二對系統(tǒng)進行優(yōu)化.
2.1 數(shù)據(jù)流向的分析
任務(wù)分配功能最終檢索出的數(shù)據(jù)是從三個表中檢索獲得,分別是T_PROJECT(項目信息表)、T_STAFF(職工信息表)和T_POLT(計劃信息表).期望數(shù)據(jù)都是前置功能對這些表中添加或者修改的數(shù)據(jù),具體數(shù)據(jù)生成如下:后臺管理模塊,管理員添加職工信息;團隊管理功能部門經(jīng)理立項,添加新的項目信息;任務(wù)分配功能,項目經(jīng)理添加組員信息;計劃承諾時,職工添加計劃信息 .分析之后發(fā)現(xiàn),任務(wù)分配功能最終檢索的數(shù)據(jù)包括職工信息表的職工ID、職工姓名,項目信息表的項目ID,計劃信息表的計劃ID、計劃名稱、計劃區(qū)分.
2.2 性能優(yōu)化的設(shè)計與實現(xiàn)
為了提高任務(wù)分配功能的檢索效率,決定在前置操作的時候提前將此功能需要檢索的數(shù)據(jù)儲存在中間表T_MID_FOR_PROJECT(項目管理用中間表)中,此表需要儲存所有任務(wù)分配功能用的數(shù)據(jù),考慮到該表在大型部門中數(shù)據(jù)量可能會很龐大的實際情況,設(shè)置自增主鍵T_MID_ID以提高檢索效率,表T_MID_FOR_PROJECT的結(jié)構(gòu)如表1所示.
表1 數(shù)據(jù)表“T_MID_FOR_PROJECT”的結(jié)構(gòu)
中間表設(shè)計完成后,需要對系統(tǒng)后臺進行一定的修改,修改包括如下幾點:
(1))添加成員成功時向T_MID_FOR_PROJECT表添加一條新數(shù)據(jù),包括職工ID、職工姓名、項目ID以及數(shù)據(jù)庫自增添加的中間表ID;
(2)職工承諾計劃后更新T_MID_FOR_PROJECT表對應(yīng)數(shù)據(jù),添加計劃ID和計劃名稱字段;
(3)任務(wù)分配功能,后臺首先根據(jù)項目經(jīng)理的職工ID檢索出對應(yīng)的項目ID,然后根據(jù)項目ID從T_MID_FOR_PROJECT表中檢索出所有數(shù)據(jù).
在系統(tǒng)優(yōu)化后利用mb0秒表工具對系統(tǒng)進行了詳細的性能測試,本章將詳細介紹利用中間表優(yōu)化系統(tǒng)前后主要優(yōu)化功能以及系統(tǒng)整體的前后性能對比,考慮到服務(wù)器CPU使用率問題,測試數(shù)據(jù)存在細微偏差.測試用服務(wù)器為低配置個人筆記本電腦,服務(wù)器參數(shù)如下:處理器:AMD A6-3420 MHz; 內(nèi)存:4GB; 操作系統(tǒng):Windows 7專業(yè)版.
3.1 任務(wù)分配功能性能對比
任務(wù)分配是本文主要優(yōu)化的功能,性能優(yōu)化后該功能的檢索效率提高顯著,前后檢索時間對比如圖2所示.
圖2 任務(wù)分配功能檢索時間對比
從圖中可以看出,忽略服務(wù)器狀態(tài)不穩(wěn)定的影響,在檢索數(shù)據(jù)為0的情況下,前后檢索時間基本沒有變化,但是僅僅上升到十條數(shù)據(jù),檢索時間就從14.79 s降低到2.86 s,就主要優(yōu)化功能而言,性能優(yōu)化達到逾期值.
從圖表發(fā)現(xiàn)另一個問題,優(yōu)化后的系統(tǒng)0條數(shù)據(jù)的檢索時間竟然比10條數(shù)據(jù)多,為了排除是測試者或者服務(wù)器問題造成的特殊情況,對優(yōu)化后的系統(tǒng)進行了大量測試,分別測試0、5、10、20、40、80、160和200條數(shù)據(jù)情況下任務(wù)分配功能的檢索時間,并且每種情況測試10次,忽略特殊值,得出平均值的數(shù)據(jù)折線圖如圖3所示.
圖3 平均時間折線圖
所有測試數(shù)據(jù)的折線圖如圖4所示.
圖4 優(yōu)化后數(shù)據(jù)對比折線圖
通過圖4發(fā)現(xiàn)第一次跟第二次的測試數(shù)據(jù)與其他數(shù)據(jù)時間偏差較大,經(jīng)過研究發(fā)現(xiàn)是因為測試用服務(wù)器的CUP使用率太高,忽略服務(wù)器問題,結(jié)合平均時間與十次測試數(shù)據(jù)的折線圖發(fā)現(xiàn),優(yōu)化后的系統(tǒng)檢索時間基本穩(wěn)定在3 s左右,這與優(yōu)化前系統(tǒng)隨著數(shù)據(jù)增加檢索時間增加相比性能優(yōu)化的目的已經(jīng)達到.
優(yōu)化前對性能不好的分析猜想是因為測試用服務(wù)器配置較低,當時特選用另一臺配置較高的服務(wù)器(酷睿i7-5500U處理器、16GB內(nèi)存)進行了少量測試.測試結(jié)果顯示,優(yōu)化前十條數(shù)據(jù)的檢索時間平均在4 s左右,優(yōu)化后用該服務(wù)器重新測試了系統(tǒng)性能,本次測試旨在觀察服務(wù)器對系統(tǒng)性能的影響是否明顯,所以僅進行了一次測試,同樣的測試了0、5、10、20、40、80、160和200條數(shù)據(jù)情況下的檢索時間,實驗結(jié)果的折線圖如圖5所示.
圖5 較高配置服務(wù)器系統(tǒng)優(yōu)化后檢索時間折線圖
優(yōu)化前后兩次選用不同配置服務(wù)器的測試結(jié)果都顯示,服務(wù)器對性能的影響很大,尤其是優(yōu)化前,同樣數(shù)據(jù)的檢索時間相差明顯.OA類系統(tǒng)是針對企業(yè)或者學(xué)校這樣的大型單位開發(fā),在服務(wù)器的選擇上肯定會更加優(yōu)于測試用服務(wù)器,本次優(yōu)化后的系統(tǒng)檢索時間已經(jīng)大大降低,雖然測試數(shù)據(jù)最多僅有200條,但是此次優(yōu)化的功能檢索數(shù)據(jù)是在單個項目組內(nèi)的檢索,考慮實際情況,200人以上的大型項目組出現(xiàn)的可能性很低,本次性能優(yōu)化目的達到.
3.2 優(yōu)化后對其他功能的性能影響
本系統(tǒng)優(yōu)化的方法是通過添加中間表來提高檢索效率,但是中間表的數(shù)據(jù)需要在其他功能操作的時候向中間表中添加,如果因為優(yōu)化了任務(wù)分配功能導(dǎo)致其他功能性能大幅降低,不符合軟件工程的思想,本節(jié)對代碼有過改動的添加成員功能、計劃承諾功能以及表結(jié)構(gòu)變化受到影響的項目查詢功能進行了前后性能對比,對比結(jié)果如圖6所示.
圖6 其他功能優(yōu)化前后對比柱形圖
測試后發(fā)現(xiàn),優(yōu)化后不僅沒有使這三個功能性能降低,添加成員功能性能還有所提高,本次系統(tǒng)優(yōu)化的設(shè)計與實現(xiàn)沒有違背軟件工程的指導(dǎo)思想.
系統(tǒng)性能問題是OA系統(tǒng)中普遍存在的問題,作為輔助學(xué)?;蛘咂髽I(yè)辦公的輔助軟件,其目的是為了提高工作效率,如果因為性能問題導(dǎo)致客戶使用系統(tǒng)時間額外增加,違背開發(fā)初衷.特此進行了部分功能的性能優(yōu)化,優(yōu)化的最初目的是想讓任務(wù)分配功能的檢索時間降低,但是最終優(yōu)化完成后測試發(fā)現(xiàn)不僅是檢索時間單純降低而已,優(yōu)化后的系統(tǒng),隨著測試數(shù)據(jù)增加,檢索時間基本穩(wěn)定在3s左右,這與之前系統(tǒng)隨著測試數(shù)據(jù)增加檢索時間增加的趨勢相比系統(tǒng)性能的提高非常顯著.雖然200條數(shù)據(jù)遠遠不符合大數(shù)據(jù)的概念,但是考慮到企業(yè)的實際情況,達到200人以上的項目出現(xiàn)情況已經(jīng)很小,本次系統(tǒng)優(yōu)化的成果已經(jīng)遠遠超出預(yù)期值.
[1]高海賓, 陶保壯. 基于Oracle數(shù)據(jù)庫索引的查詢優(yōu)化研究[J]. 新余學(xué)院學(xué)報, 2016, 21(4):99-101.
[2]張梅梅, 宋正明, 李豪,等. SQL Server 2008中的存儲過程的研究及應(yīng)用[J]. 中國市場, 2016,23:79-80.
[3]劉小華. 基于索引的Oracle查詢效率優(yōu)化研究[J].工程技術(shù)(文摘版), 2015,53:162-162.
[4]馬朝紅, 詹晉瑋. 數(shù)據(jù)庫性能優(yōu)化技術(shù)應(yīng)用研究[J]. 計算機與網(wǎng)絡(luò), 2016, 42(8):62-64.
[5]劉麗娟. SQL語言在DB2數(shù)據(jù)庫中存在問題的探討與研究[J]. 商場現(xiàn)代化, 2011,23:151-151.
OA System Performance Optimization and Research on Improving Efficiency of Data Retrieval Methods
LIU Lijuan1, HUANG Jin2
(1. Software Institute, Dalian Jiaotong University, Dalian 116052,China; 2. Dalian Huaxin Computer Technology Co., Ltd, Dalian 116085, China)
Aiming at the problem of long data retrieval time and poor performance of the data in the project management system, two system optimization schemes are put forward. Through the establishment of intermediate table and in advance of the useful data storage, the intermediate table is used directly to retrieve data. The search time is effectively reduced, and the efficiency of the system is improved. The performance of the system is improved by more than 60% in the middle of the table.
intermediate table; performance optimization; project management system
1673- 9590(2017)04- 0177- 04
2016- 07- 07
遼寧省自然科學(xué)基金資助項目(201602124)
劉麗娟( 1978-),女,講師,碩士,從事計算機應(yīng)用控制的研究E- mail:mishu06@163.com.
A