国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

解決軟件性能問(wèn)題的DB2數(shù)據(jù)庫(kù)優(yōu)化方案

2013-12-29 00:00:00馬秋慧
電腦知識(shí)與技術(shù) 2013年4期

摘要:通過(guò)應(yīng)用軟件的具體案例,結(jié)合DB2數(shù)據(jù)庫(kù)的使用經(jīng)驗(yàn),該文提出采用數(shù)據(jù)庫(kù)技術(shù)解決軟件性能問(wèn)題的一些思路、原則和方法等。

關(guān)鍵詞:DB2;軟件性能;數(shù)據(jù)庫(kù)優(yōu)化;優(yōu)化方案

中圖分類(lèi)號(hào):F426.21 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)04-0671-03

Performance Optimizations of DB2 in Application Software

MA Qiu-hui

(Quality Dept. ,But’one Information Corporation, Xi’an 710043,China)

Abstract: This article gives some ideas, principles and methods to solve software performance issues by the specific case and the DB2 database using experience.

Key words: DB2; performance of software; database optimization; solution of optimization

我公司為某煤炭集團(tuán)開(kāi)發(fā)了企業(yè)運(yùn)銷(xiāo)管理信息系統(tǒng)。系統(tǒng)采用J2EE體系架構(gòu)JSP+JAVABEAN+SERVLET三層結(jié)構(gòu)實(shí)現(xiàn),運(yùn)行于WEBSPHERE應(yīng)用容器之上,使用DB2數(shù)據(jù)庫(kù)存儲(chǔ)信息。系統(tǒng)功能包括:調(diào)撥管理、發(fā)運(yùn)管理、地銷(xiāo)管理、結(jié)算管理、統(tǒng)計(jì)管理、市場(chǎng)運(yùn)營(yíng)、系統(tǒng)維護(hù)等13個(gè)功能模塊,覆蓋20多個(gè)部門(mén)日常業(yè)務(wù),是一套符合客戶其業(yè)務(wù)流程、切合其自身需要、充分發(fā)揮其營(yíng)銷(xiāo)優(yōu)勢(shì)、量身定制的信息化系統(tǒng)。系統(tǒng)使用13個(gè)月后,隨著客戶業(yè)務(wù)量的猛增,軟件終端的使用人數(shù)從最初的100人迅速增到300人,并仍在繼續(xù)增加。

軟件在上線之前已經(jīng)通過(guò)功能性能測(cè)試,并保留有一定的冗余量。上線運(yùn)行一年以后,用戶反映軟件運(yùn)行變慢,打開(kāi)頁(yè)面時(shí)間過(guò)長(zhǎng),性能問(wèn)題嚴(yán)重影響了業(yè)務(wù)的正常運(yùn)行。

1 問(wèn)題描述

根據(jù)通用使用原則,打開(kāi)頁(yè)面的吸引分界線是8秒,若在8秒以內(nèi)顯示一個(gè)頁(yè)面可以吸引使用者,讓使用者樂(lè)于使用。該用戶的調(diào)運(yùn)聯(lián)辦和財(cái)務(wù)兩個(gè)部門(mén)用戶反映:以前很快,最近一段時(shí)間(近兩個(gè)月)越來(lái)越慢?,F(xiàn)場(chǎng)測(cè)試驗(yàn)證,最快打開(kāi)頁(yè)面一分多鐘,打開(kāi)調(diào)運(yùn)科報(bào)表總表花了九分鐘。確實(shí)已經(jīng)難以接受,而用戶在一天的工作中,“集中”操作行為不會(huì)集中發(fā)生。

2 軟件性能分析

2.1 分析層次

1)硬件的配置:包括網(wǎng)絡(luò)環(huán)境有交換機(jī)、路由器等,對(duì)硬件配置進(jìn)行分析,對(duì)服務(wù)器的內(nèi)存、CPU等。認(rèn)為此方面無(wú)明顯問(wèn)題。

2)軟件系統(tǒng)設(shè)計(jì)的架構(gòu)及技術(shù)平臺(tái):系統(tǒng)架構(gòu)及平臺(tái)技術(shù)已經(jīng)既成,可不考慮;

3)WEBSPHERE中間件的設(shè)置和優(yōu)化:

設(shè)置容器性能Java虛擬機(jī)堆大小(JVM Heap Size)參數(shù), Web容器線程池參數(shù)等。

4)數(shù)據(jù)庫(kù)優(yōu)化:

① 控制內(nèi)存的使用:系統(tǒng)內(nèi)存使用正常。

② 避免過(guò)度消耗CPU:CPU應(yīng)用在80%以上,較高。

③ 提高磁盤(pán)的效率:對(duì)硬盤(pán)進(jìn)監(jiān)測(cè)發(fā)現(xiàn)大量硬盤(pán)碎片。

④ 減少網(wǎng)絡(luò)開(kāi)銷(xiāo):狀態(tài)正常。

5)應(yīng)用程序

針對(duì)問(wèn)題頁(yè)面,分析了問(wèn)題頁(yè)面的問(wèn)題,主要涉及存取、更新、查詢和系統(tǒng)響應(yīng)時(shí)間。遂對(duì)相應(yīng)的數(shù)據(jù)表的結(jié)構(gòu)和表現(xiàn)進(jìn)行分析,發(fā)現(xiàn)涉及業(yè)務(wù)的最大的一張表是300多萬(wàn)條數(shù)據(jù),隨著系統(tǒng)不斷運(yùn)行,數(shù)據(jù)量還在不斷增長(zhǎng),查詢速度明顯很慢。

6)SQL語(yǔ)句

分析SQL語(yǔ)言中DML的運(yùn)用情況,首先查看查詢的性能問(wèn)題,在查詢一張表或多張表的聯(lián)合查詢時(shí),應(yīng)該通過(guò)盡可能晚地啟動(dòng)事務(wù)的第一個(gè)SQL語(yǔ)句,使事務(wù)更新盡可能接近提交階段,從而使事務(wù)的持續(xù)時(shí)間盡可能的短。對(duì)問(wèn)題頁(yè)面的分析認(rèn)為個(gè)別查詢語(yǔ)句還可以再進(jìn)行優(yōu)化。

2.2 分析工具

1)通過(guò)DB2健康中心的監(jiān)測(cè),分析系統(tǒng)內(nèi)存使用情況、數(shù)據(jù)服務(wù)器的資源使用情況、系統(tǒng)最大的業(yè)務(wù)處理量、內(nèi)存使用、線程等;未發(fā)現(xiàn)系統(tǒng)內(nèi)存泄露等嚴(yán)重問(wèn)題。

在 DB2 中有很多和性能優(yōu)化相關(guān)的工具和命令,下面簡(jiǎn)單地介紹幾種:

① SNAPSHOT: 這是 DB2 獲取數(shù)據(jù)庫(kù)信息快照的一種方法。它能夠獲取在數(shù)據(jù)庫(kù)中關(guān)于緩沖池,鎖,排序以及 SQL 等等信息。 DBA 可以通過(guò)獲取這些信息來(lái)對(duì)數(shù)據(jù)庫(kù)中的各組件進(jìn)行評(píng)估來(lái)分析問(wèn)題的瓶頸。

② DB2PD: 這個(gè)命令是用來(lái)分析數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài),它帶有很多參數(shù)??梢杂脕?lái)分析應(yīng)用程序,代理,內(nèi)存塊,緩沖池,日志及鎖狀態(tài)等信息。

③ RUNSTATS: 這個(gè)命令是用來(lái)收集數(shù)據(jù)庫(kù)中數(shù)據(jù)的最新統(tǒng)計(jì)信息,并更新到系統(tǒng)表中。更新統(tǒng)計(jì)信息將會(huì)促使優(yōu)化器選擇更加符合實(shí)際的高效的訪問(wèn)計(jì)劃,從而提高工作效率。

④ REORG: 這個(gè)命令用來(lái)重新整理數(shù)據(jù)庫(kù)中數(shù)據(jù)和索引的碎片,使其在物理上可以得以按一定規(guī)則排列,這樣可以加快檢索的速度。

⑤ DB2DART: 這個(gè)命令是一個(gè)數(shù)據(jù)庫(kù)的分析和報(bào)告工具,它用來(lái)檢查表空間,索引以及數(shù)據(jù)庫(kù)結(jié)構(gòu)的正確性,分析在性能問(wèn)題上的一些原因。

⑥ DB2SUPPORT: 這個(gè)命令用來(lái)收集 DB2 和操作系統(tǒng)的所有相關(guān)信息并生成一個(gè)壓縮文件,可傳送給優(yōu)化人員進(jìn)行分析。

2)使用LoadRouner測(cè)試工具,對(duì)軟件性能指標(biāo)進(jìn)行了測(cè)量,包括:

① 響應(yīng)時(shí)間:服務(wù)器端響應(yīng)時(shí)間,客戶端響應(yīng)時(shí)間;

② 吞吐量:也就是軟件系統(tǒng)在每單位時(shí)間內(nèi)能處理多少個(gè)事務(wù)/請(qǐng)求/單位數(shù)據(jù)等;

③ 資源使用率:CPU占用率、內(nèi)存使用率、磁盤(pán)I/O、網(wǎng)絡(luò)I/O。

④ 并發(fā)用戶數(shù):并發(fā)數(shù)反映了軟件系統(tǒng)的并發(fā)處理能力,和吞吐量不同的是,它大多是占用套接字、句柄等操作系統(tǒng)資源。

2.3 問(wèn)題原因歸納

1)業(yè)務(wù)系統(tǒng)復(fù)雜,不正確的邏輯實(shí)現(xiàn)導(dǎo)致數(shù)據(jù)庫(kù)訪問(wèn)頻繁,使用過(guò)程中產(chǎn)生大量請(qǐng)求碎片。

2)查詢調(diào)用的有關(guān)業(yè)務(wù)數(shù)據(jù)表,數(shù)據(jù)量很大,但數(shù)據(jù)表索引不太合理。

3)個(gè)別數(shù)據(jù)表在進(jìn)行數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)時(shí),對(duì)該表的容量沒(méi)有充分考慮。

3 性能問(wèn)題解決策略

軟件性能需要將軟件運(yùn)行空間和時(shí)間綜合考慮,所以針對(duì)以上具體問(wèn)題的分析,合理平衡各種矛盾,制定以下系統(tǒng)性能方案。針對(duì)原因,制定了數(shù)據(jù)庫(kù)性能調(diào)優(yōu)方案。

3.1 優(yōu)化數(shù)據(jù)庫(kù)配置參數(shù)

系統(tǒng)剛開(kāi)始運(yùn)行時(shí),已經(jīng)采用DB2快照等解決了某些配置參數(shù)的問(wèn)題,本次運(yùn)行一段時(shí)間之后,考慮調(diào)節(jié)以下參數(shù):NON_HEAP_SE(DBM)、QUERY_HEAP_SE(DBM)、MAXAPPLS(DB)等參數(shù),具體配置參照有關(guān)數(shù)據(jù)庫(kù)專(zhuān)業(yè)資料。

3.2 利用索引機(jī)制優(yōu)化數(shù)據(jù)訪問(wèn)策略,對(duì)數(shù)據(jù)庫(kù)表和索引進(jìn)行重組優(yōu)化

遵循表索引建立的的原則,借助于DB2的自動(dòng)索引建立工具把所有業(yè)務(wù)模塊執(zhí)行一遍,查出所有SQL語(yǔ)句,然后由DB2系統(tǒng)自動(dòng)提出索引建議,在此基礎(chǔ)上按照個(gè)性要求,進(jìn)行重組優(yōu)化。

3.3 把大數(shù)據(jù)表進(jìn)行分區(qū)

對(duì)數(shù)據(jù)庫(kù)進(jìn)行分庫(kù)分區(qū)設(shè)計(jì),分離當(dāng)前業(yè)務(wù)數(shù)據(jù)和歷史數(shù)據(jù)。建立分區(qū)表,把分區(qū)表的數(shù)據(jù)放在不同的表空間,這樣避免了無(wú)關(guān)數(shù)據(jù)的訪問(wèn),提供了更好的查詢性能,而且,此時(shí),方便數(shù)據(jù)的轉(zhuǎn)進(jìn)和轉(zhuǎn)出,去除以往的歷史數(shù)據(jù),加入新鮮的當(dāng)前數(shù)據(jù)。

3.4 物化查詢表的建立

對(duì)于涉及復(fù)雜的大表或計(jì)算復(fù)雜的SQL語(yǔ)句,而且yQnNu2gTWaE5yeIT1f1EUwjSyul9INNPWcW80Cgs9L0=其中數(shù)據(jù)不經(jīng)常更改的表,一天之內(nèi)不變化,做成物化查詢表,它可以極大地提高性能,用這樣的表來(lái)處理令人頭疼的SQL語(yǔ)句。

3.5 調(diào)整問(wèn)題查詢對(duì)應(yīng)的業(yè)務(wù)邏輯,降級(jí)對(duì)公共數(shù)據(jù)資源重復(fù)頻繁查詢

通過(guò)調(diào)整對(duì)應(yīng)業(yè)務(wù)邏輯,降級(jí)對(duì)公共數(shù)據(jù)資源重復(fù)頻繁查詢,明顯提高了報(bào)表查詢性能。

3.6 指導(dǎo)用戶做好系統(tǒng)的日常維護(hù)

建立規(guī)范化的維護(hù)制度,敦促客戶及時(shí)發(fā)現(xiàn)問(wèn)題,處理問(wèn)題于萌芽狀態(tài)。

4 改進(jìn)效果

通過(guò)以上幾個(gè)方面的改進(jìn),更新數(shù)據(jù)庫(kù)后,效果非常明顯,用戶非常滿意。前后效果比對(duì)數(shù)據(jù)如表1。

[NO.\&Transaction. \&Min. \&Ave. \&Max. \&Bef. \&UP(Bef./Ave.)\&事務(wù)\&最小時(shí)間\&平均時(shí)間\&最長(zhǎng)時(shí)間\&改進(jìn)前平均時(shí)間\&響應(yīng)速度提高倍數(shù)\&1\&運(yùn)銷(xiāo)鐵運(yùn)業(yè)務(wù)\裝車(chē)分配車(chē)皮信息\&4.0124\&6.353\&8.451\&180\&32 \&2\&銷(xiāo)售財(cái)務(wù)管理\生成鐵路貨票匯總表\&0.823\&31.231\&106.36\&1200\&38 \&3\&調(diào)運(yùn)計(jì)劃管理\查詢?nèi)照?qǐng)車(chē)計(jì)劃\&2.308\&3.455\&4.601\&420\&122 \&4\&調(diào)運(yùn)計(jì)劃管理\查詢?cè)露扔?jì)劃\&1.795\&2.517\&3.203\&420\&167 \&5\&運(yùn)銷(xiāo)鐵運(yùn)業(yè)務(wù)\查詢鐵運(yùn)值班記錄\&0.769\&1.052\&1.602\&330\&314 \&6\&調(diào)運(yùn)科報(bào)表\站運(yùn)銷(xiāo)日?qǐng)?bào)\&51.817\&89.035\&105.82\&540\&6 \&]

5 結(jié)束語(yǔ)

針對(duì)DB2軟件系統(tǒng)性能優(yōu)化問(wèn)題,文中結(jié)合具體案例,從性能問(wèn)題分析層次、分析工具、總結(jié)歸納,提出數(shù)據(jù)庫(kù)參數(shù)調(diào)整、利用索引機(jī)制、數(shù)據(jù)表分區(qū)等數(shù)據(jù)庫(kù)優(yōu)化的思路、原則和方法,有效提高了軟件系統(tǒng)的響應(yīng)時(shí)間等性能,極大地提高用戶滿意度。

參考文獻(xiàn):

[1] 楊鑫華,丁傳華,趙慧敏.數(shù)據(jù)庫(kù)原理與DB2應(yīng)用教程[M].北京:清華大學(xué)出版社,2007.

[2] 王飛鵬.DB2設(shè)計(jì)與性能優(yōu)化:原理、方法與實(shí)踐[M].北京:電子工業(yè)出版社,2011.

[3] 牛新莊.DB2數(shù)據(jù)庫(kù)性能調(diào)整和優(yōu)化[M].北京:清華大學(xué)出版社,2009.

[4] 朱延梅,邵遠(yuǎn)山.基于DB2數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的性能優(yōu)化方法[J].阜陽(yáng)師范學(xué)院學(xué)報(bào):自然科學(xué)版,2006 ,23(2).

许昌市| 静安区| 和静县| 梅河口市| 沐川县| 德保县| 松溪县| 辽源市| 普兰县| 全州县| 高雄县| 九江县| 乐山市| 牟定县| 柯坪县| 深水埗区| 钟祥市| 屏山县| 河池市| 宁陕县| 镇巴县| 孟村| 土默特右旗| 丰顺县| 绥芬河市| 佛学| 马山县| 耒阳市| 内丘县| 平塘县| 铁岭县| 昆明市| 张家港市| 易门县| 奉新县| 彰武县| 铜鼓县| 绿春县| 高陵县| 襄汾县| 南宫市|