劉麗娟,黃錦
(1.大連交通大學(xué) 軟件學(xué)院,遼寧 大連 116052; 2.大連華信計(jì)算機(jī)技術(shù)股份有限公司,遼寧 大連 116085)
OA系統(tǒng)性能優(yōu)化及提高數(shù)據(jù)檢索效率方法研究
劉麗娟1,黃錦2
(1.大連交通大學(xué) 軟件學(xué)院,遼寧 大連 116052; 2.大連華信計(jì)算機(jī)技術(shù)股份有限公司,遼寧 大連 116085)
針對項(xiàng)目管理系統(tǒng)中數(shù)據(jù)交錯(cuò)導(dǎo)致數(shù)據(jù)檢索時(shí)間長,系統(tǒng)性能差的問題,提出兩個(gè)系統(tǒng)優(yōu)化的方案:添加索引和添加中間表.最終通過建立中間表,提前將有用數(shù)據(jù)存儲,使用時(shí)直接從中間表中檢索數(shù)據(jù),有效的降低檢索時(shí)間,提高系統(tǒng)運(yùn)行效率.運(yùn)用中間表的方式,對系統(tǒng)性能的提高在60%以上.
中間表;性能優(yōu)化;項(xiàng)目管理系統(tǒng)
隨著云計(jì)算、大數(shù)據(jù)等技術(shù)日益成熟,自動化管理開始大規(guī)模普及.本文在對大連某大型軟件外包企業(yè)進(jìn)行實(shí)地考察后設(shè)計(jì)了一款基于自動化理念的項(xiàng)目管理系統(tǒng).應(yīng)用該系統(tǒng)可以實(shí)現(xiàn)高效、準(zhǔn)確、便利的項(xiàng)目管理,但是在系統(tǒng)測試階段,該系統(tǒng)的部分功能檢索效率非常低.出現(xiàn)問題的主要原因是期望數(shù)據(jù)需要從多表中根據(jù)不同條件檢索獲得,導(dǎo)致在測試數(shù)據(jù)僅僅十條的情況下就達(dá)到14.79 s之久,結(jié)合企業(yè)實(shí)際數(shù)據(jù)更加龐大的實(shí)際情況,特對系統(tǒng)進(jìn)行優(yōu)化處理.本文對優(yōu)化前后的系統(tǒng)性能進(jìn)行了大量測試,通過對測試數(shù)據(jù)及圖標(biāo)的分析,優(yōu)化后系統(tǒng)性能最終滿足開發(fā)要求.
1.1 系統(tǒng)介紹
本系統(tǒng)設(shè)計(jì)為軟件公司用自動化管理系統(tǒng),核心是項(xiàng)目管理模塊,管理模塊中任務(wù)分配功能和工資結(jié)算功能的性能明顯太差.任務(wù)分配功能是該系統(tǒng)中項(xiàng)目經(jīng)理級別的職工操作的功能,目的是檢索出自己項(xiàng)目組所有成員管理各成員的計(jì)劃,該檢索生成的數(shù)據(jù)源分為如下幾個(gè)方面:根據(jù)項(xiàng)目經(jīng)理的職工ID從項(xiàng)目信息表中檢索出對應(yīng)項(xiàng)目信息;根據(jù)項(xiàng)目組成員的職工ID從職工信息表檢索出職工信息;根據(jù)項(xiàng)目組成員的職工ID從計(jì)劃信息表檢索出對應(yīng)計(jì)劃信息;系統(tǒng)最終檢索后的數(shù)據(jù)顯示如圖1所示.
圖1 任務(wù)分配功能
1.2 檢索效率原因分析
優(yōu)化前的數(shù)據(jù)庫設(shè)計(jì)并沒有切實(shí)考慮到任務(wù)分配功能的實(shí)際操作,在項(xiàng)目信息表中添加PRO_STA_ID1~PRO_STA_IDN字段用來存儲項(xiàng)目組成員的職工ID,這樣的設(shè)計(jì)固然可以在添加組員的操作上方便對數(shù)據(jù)庫的操作,但是任務(wù)分配功能需要最終檢索出包括組員的計(jì)劃信息在內(nèi)的詳細(xì)信息,以優(yōu)化前的數(shù)據(jù)庫設(shè)計(jì)而言,系統(tǒng)需要在檢索出組員職工ID之后再次根據(jù)職工ID檢索計(jì)劃信息,企業(yè)實(shí)際情況而言,小型團(tuán)隊(duì)可能體現(xiàn)不明顯,但是當(dāng)遇到幾百人以上的大型項(xiàng)目,這種設(shè)計(jì)的缺點(diǎn)就會被無限放大.
在軟件開發(fā)中,客戶對系統(tǒng)的性能有很高的要求,大數(shù)據(jù)時(shí)代的到來,很多處理會涉及到龐大的數(shù)據(jù)量,在實(shí)際軟件項(xiàng)目的開發(fā)過程中,會有針對龐大數(shù)據(jù)量的性能測試.一般大型系統(tǒng),例如鐵路系統(tǒng),銀行系統(tǒng),都會有對應(yīng)的批處理.在針對企業(yè)、學(xué)校等OA類型的系統(tǒng)中,雖然限制于系統(tǒng)使用用戶數(shù)量,數(shù)據(jù)量一般不會達(dá)到十幾萬以上的級別,但是,這類OA系統(tǒng)中的檢索條件可能相對復(fù)雜,即使幾百條數(shù)據(jù),如果系統(tǒng)的處理不好,也會使系統(tǒng)性能達(dá)不到客戶要求,針對本OA系統(tǒng)出現(xiàn)的問題查找了相應(yīng)文獻(xiàn).文獻(xiàn)[1]中系統(tǒng)分析了Oracle數(shù)據(jù)庫索引的特點(diǎn),對使用SQL語句基于索引對數(shù)據(jù)庫的效率進(jìn)行優(yōu)化的實(shí)現(xiàn)方法提出了幾點(diǎn)認(rèn)識,并以自己的實(shí)際工作經(jīng)驗(yàn)為例進(jìn)行了一些新的探索和嘗試;文獻(xiàn)[2]中使用存儲過程可以優(yōu)化對數(shù)據(jù)庫的訪問,該文通過實(shí)例,較詳細(xì)地闡述了創(chuàng)建存儲過程及在ASP中調(diào)用存儲過程的方法.經(jīng)過研究討論之后,提出兩條可行性方案,方案一:利用索引提高檢索性能[3];方案二:添加中間表,降低數(shù)據(jù)檢索復(fù)雜度.但是該系統(tǒng)的數(shù)據(jù)庫在設(shè)計(jì)的時(shí)候?qū)γ總€(gè)表都設(shè)置了自增的主鍵,而性能不好的功能在從數(shù)據(jù)庫檢索數(shù)據(jù)時(shí)檢索條件基本都為主鍵檢索,討論之后發(fā)現(xiàn)就算再給其他列添加索引對系統(tǒng)性能的提高也并不明顯,最終本文選定方案二對系統(tǒng)進(jìn)行優(yōu)化.
2.1 數(shù)據(jù)流向的分析
任務(wù)分配功能最終檢索出的數(shù)據(jù)是從三個(gè)表中檢索獲得,分別是T_PROJECT(項(xiàng)目信息表)、T_STAFF(職工信息表)和T_POLT(計(jì)劃信息表).期望數(shù)據(jù)都是前置功能對這些表中添加或者修改的數(shù)據(jù),具體數(shù)據(jù)生成如下:后臺管理模塊,管理員添加職工信息;團(tuán)隊(duì)管理功能部門經(jīng)理立項(xiàng),添加新的項(xiàng)目信息;任務(wù)分配功能,項(xiàng)目經(jīng)理添加組員信息;計(jì)劃承諾時(shí),職工添加計(jì)劃信息 .分析之后發(fā)現(xiàn),任務(wù)分配功能最終檢索的數(shù)據(jù)包括職工信息表的職工ID、職工姓名,項(xiàng)目信息表的項(xiàng)目ID,計(jì)劃信息表的計(jì)劃ID、計(jì)劃名稱、計(jì)劃區(qū)分.
2.2 性能優(yōu)化的設(shè)計(jì)與實(shí)現(xiàn)
為了提高任務(wù)分配功能的檢索效率,決定在前置操作的時(shí)候提前將此功能需要檢索的數(shù)據(jù)儲存在中間表T_MID_FOR_PROJECT(項(xiàng)目管理用中間表)中,此表需要儲存所有任務(wù)分配功能用的數(shù)據(jù),考慮到該表在大型部門中數(shù)據(jù)量可能會很龐大的實(shí)際情況,設(shè)置自增主鍵T_MID_ID以提高檢索效率,表T_MID_FOR_PROJECT的結(jié)構(gòu)如表1所示.
表1 數(shù)據(jù)表“T_MID_FOR_PROJECT”的結(jié)構(gòu)
中間表設(shè)計(jì)完成后,需要對系統(tǒng)后臺進(jìn)行一定的修改,修改包括如下幾點(diǎn):
(1))添加成員成功時(shí)向T_MID_FOR_PROJECT表添加一條新數(shù)據(jù),包括職工ID、職工姓名、項(xiàng)目ID以及數(shù)據(jù)庫自增添加的中間表ID;
(2)職工承諾計(jì)劃后更新T_MID_FOR_PROJECT表對應(yīng)數(shù)據(jù),添加計(jì)劃ID和計(jì)劃名稱字段;
(3)任務(wù)分配功能,后臺首先根據(jù)項(xiàng)目經(jīng)理的職工ID檢索出對應(yīng)的項(xiàng)目ID,然后根據(jù)項(xiàng)目ID從T_MID_FOR_PROJECT表中檢索出所有數(shù)據(jù).
在系統(tǒng)優(yōu)化后利用mb0秒表工具對系統(tǒng)進(jìn)行了詳細(xì)的性能測試,本章將詳細(xì)介紹利用中間表優(yōu)化系統(tǒng)前后主要優(yōu)化功能以及系統(tǒng)整體的前后性能對比,考慮到服務(wù)器CPU使用率問題,測試數(shù)據(jù)存在細(xì)微偏差.測試用服務(wù)器為低配置個(gè)人筆記本電腦,服務(wù)器參數(shù)如下:處理器:AMD A6-3420 MHz; 內(nèi)存:4GB; 操作系統(tǒng):Windows 7專業(yè)版.
3.1 任務(wù)分配功能性能對比
任務(wù)分配是本文主要優(yōu)化的功能,性能優(yōu)化后該功能的檢索效率提高顯著,前后檢索時(shí)間對比如圖2所示.
圖2 任務(wù)分配功能檢索時(shí)間對比
從圖中可以看出,忽略服務(wù)器狀態(tài)不穩(wěn)定的影響,在檢索數(shù)據(jù)為0的情況下,前后檢索時(shí)間基本沒有變化,但是僅僅上升到十條數(shù)據(jù),檢索時(shí)間就從14.79 s降低到2.86 s,就主要優(yōu)化功能而言,性能優(yōu)化達(dá)到逾期值.
從圖表發(fā)現(xiàn)另一個(gè)問題,優(yōu)化后的系統(tǒng)0條數(shù)據(jù)的檢索時(shí)間竟然比10條數(shù)據(jù)多,為了排除是測試者或者服務(wù)器問題造成的特殊情況,對優(yōu)化后的系統(tǒng)進(jìn)行了大量測試,分別測試0、5、10、20、40、80、160和200條數(shù)據(jù)情況下任務(wù)分配功能的檢索時(shí)間,并且每種情況測試10次,忽略特殊值,得出平均值的數(shù)據(jù)折線圖如圖3所示.
圖3 平均時(shí)間折線圖
所有測試數(shù)據(jù)的折線圖如圖4所示.
圖4 優(yōu)化后數(shù)據(jù)對比折線圖
通過圖4發(fā)現(xiàn)第一次跟第二次的測試數(shù)據(jù)與其他數(shù)據(jù)時(shí)間偏差較大,經(jīng)過研究發(fā)現(xiàn)是因?yàn)闇y試用服務(wù)器的CUP使用率太高,忽略服務(wù)器問題,結(jié)合平均時(shí)間與十次測試數(shù)據(jù)的折線圖發(fā)現(xiàn),優(yōu)化后的系統(tǒng)檢索時(shí)間基本穩(wěn)定在3 s左右,這與優(yōu)化前系統(tǒng)隨著數(shù)據(jù)增加檢索時(shí)間增加相比性能優(yōu)化的目的已經(jīng)達(dá)到.
優(yōu)化前對性能不好的分析猜想是因?yàn)闇y試用服務(wù)器配置較低,當(dāng)時(shí)特選用另一臺配置較高的服務(wù)器(酷睿i7-5500U處理器、16GB內(nèi)存)進(jìn)行了少量測試.測試結(jié)果顯示,優(yōu)化前十條數(shù)據(jù)的檢索時(shí)間平均在4 s左右,優(yōu)化后用該服務(wù)器重新測試了系統(tǒng)性能,本次測試旨在觀察服務(wù)器對系統(tǒng)性能的影響是否明顯,所以僅進(jìn)行了一次測試,同樣的測試了0、5、10、20、40、80、160和200條數(shù)據(jù)情況下的檢索時(shí)間,實(shí)驗(yàn)結(jié)果的折線圖如圖5所示.
圖5 較高配置服務(wù)器系統(tǒng)優(yōu)化后檢索時(shí)間折線圖
優(yōu)化前后兩次選用不同配置服務(wù)器的測試結(jié)果都顯示,服務(wù)器對性能的影響很大,尤其是優(yōu)化前,同樣數(shù)據(jù)的檢索時(shí)間相差明顯.OA類系統(tǒng)是針對企業(yè)或者學(xué)校這樣的大型單位開發(fā),在服務(wù)器的選擇上肯定會更加優(yōu)于測試用服務(wù)器,本次優(yōu)化后的系統(tǒng)檢索時(shí)間已經(jīng)大大降低,雖然測試數(shù)據(jù)最多僅有200條,但是此次優(yōu)化的功能檢索數(shù)據(jù)是在單個(gè)項(xiàng)目組內(nèi)的檢索,考慮實(shí)際情況,200人以上的大型項(xiàng)目組出現(xiàn)的可能性很低,本次性能優(yōu)化目的達(dá)到.
3.2 優(yōu)化后對其他功能的性能影響
本系統(tǒng)優(yōu)化的方法是通過添加中間表來提高檢索效率,但是中間表的數(shù)據(jù)需要在其他功能操作的時(shí)候向中間表中添加,如果因?yàn)閮?yōu)化了任務(wù)分配功能導(dǎo)致其他功能性能大幅降低,不符合軟件工程的思想,本節(jié)對代碼有過改動的添加成員功能、計(jì)劃承諾功能以及表結(jié)構(gòu)變化受到影響的項(xiàng)目查詢功能進(jìn)行了前后性能對比,對比結(jié)果如圖6所示.
圖6 其他功能優(yōu)化前后對比柱形圖
測試后發(fā)現(xiàn),優(yōu)化后不僅沒有使這三個(gè)功能性能降低,添加成員功能性能還有所提高,本次系統(tǒng)優(yōu)化的設(shè)計(jì)與實(shí)現(xiàn)沒有違背軟件工程的指導(dǎo)思想.
系統(tǒng)性能問題是OA系統(tǒng)中普遍存在的問題,作為輔助學(xué)?;蛘咂髽I(yè)辦公的輔助軟件,其目的是為了提高工作效率,如果因?yàn)樾阅軉栴}導(dǎo)致客戶使用系統(tǒng)時(shí)間額外增加,違背開發(fā)初衷.特此進(jìn)行了部分功能的性能優(yōu)化,優(yōu)化的最初目的是想讓任務(wù)分配功能的檢索時(shí)間降低,但是最終優(yōu)化完成后測試發(fā)現(xiàn)不僅是檢索時(shí)間單純降低而已,優(yōu)化后的系統(tǒng),隨著測試數(shù)據(jù)增加,檢索時(shí)間基本穩(wěn)定在3s左右,這與之前系統(tǒng)隨著測試數(shù)據(jù)增加檢索時(shí)間增加的趨勢相比系統(tǒng)性能的提高非常顯著.雖然200條數(shù)據(jù)遠(yuǎn)遠(yuǎn)不符合大數(shù)據(jù)的概念,但是考慮到企業(yè)的實(shí)際情況,達(dá)到200人以上的項(xiàng)目出現(xiàn)情況已經(jīng)很小,本次系統(tǒng)優(yōu)化的成果已經(jīng)遠(yuǎn)遠(yuǎn)超出預(yù)期值.
[1]高海賓, 陶保壯. 基于Oracle數(shù)據(jù)庫索引的查詢優(yōu)化研究[J]. 新余學(xué)院學(xué)報(bào), 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]. 計(jì)算機(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é)基金資助項(xiàng)目(201602124)
劉麗娟( 1978-),女,講師,碩士,從事計(jì)算機(jī)應(yīng)用控制的研究E- mail:mishu06@163.com.
A