摘要:數(shù)據(jù)庫性能問題已經(jīng)成為數(shù)據(jù)庫研究的焦點之一,如何讓數(shù)據(jù)庫高效的運行是數(shù)據(jù)庫管理中必須重點考慮的問題。該文以企業(yè)ERP系統(tǒng)的SQL Server數(shù)據(jù)庫為主要研究對象,在分析優(yōu)化的目標(biāo)和步驟流程,提出了適合ERP數(shù)據(jù)庫的優(yōu)化方法。
關(guān)鍵詞:ERP;數(shù)據(jù)庫優(yōu)化;優(yōu)化步驟;優(yōu)化目標(biāo)
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2010)11-2563-02
The Study on Performance Optimization of ERP Database
LV Hong1,2, XIE Jie2
(1.College of Computer and Communication, Hunan University, Changsha 410082, China; 2.Coputer Department, Xiangnan University, Chenzhou 423000, China)
Abstract: In a database, capability is one of the key points which we focus on. How to make database operate fast and effectively is what the system administrators concern. This paper is based on SQL Server database of ERP system. Based on the object and procedure of optimization, this paper presented the suitable optimized method for ERP database.
Key words: ERP; database optimization; procedures; optimized object
數(shù)據(jù)庫系統(tǒng)性能的好壞主要是通過響應(yīng)時間和吞吐量來衡量,響應(yīng)越快,吞吐量越大,系統(tǒng)性能就越好。在很多ERP信息系統(tǒng)中,在短時間內(nèi)采集的數(shù)據(jù)量大,用戶與系統(tǒng)的交互時間短,存在對系統(tǒng)的密集性訪問,同時存在對數(shù)據(jù)庫海量數(shù)據(jù)的讀寫[1]。因此,優(yōu)化和調(diào)整數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能,是數(shù)據(jù)庫應(yīng)用系統(tǒng)滿足ERP系統(tǒng)用戶的上述要求顯得極其重要。
1 優(yōu)化的目標(biāo)和步驟流程
1.1 優(yōu)化的目標(biāo)
1)縮短系統(tǒng)的響應(yīng)時間
系統(tǒng)響應(yīng)的時間的長短對用戶來說非常重要。漫長的響應(yīng)時間意味著用戶只能在線等待,同時阻礙了其他的用戶使用系統(tǒng)。對響應(yīng)時間有嚴(yán)格要求的系統(tǒng),必須采取不同的方法對系統(tǒng)進(jìn)行調(diào)整。縮短系統(tǒng)響應(yīng)時間可以采用使系統(tǒng)以低于其實際吞吐能力的吞吐量運行或者將需要進(jìn)行批處理的作業(yè)放在空閑時間段運行。
2)提高系統(tǒng)的吞吐量
系統(tǒng)的吞吐量是指單位時間內(nèi)系統(tǒng)處理用戶的請求數(shù),提高系統(tǒng)的吞吐量可通過在同樣的資源下做更多的工作或通過減少總的響應(yīng)時間使工作做的更快。一般而言,調(diào)優(yōu)的目的與應(yīng)用的需求密切相關(guān),在聯(lián)機(jī)事務(wù)處理(OLTP)應(yīng)用中,主要關(guān)注系統(tǒng)的吞吐量,因為OLTP應(yīng)用每天要處理大量的交易,而在決策支持系統(tǒng)(DSS)中,主要關(guān)注的是系統(tǒng)的響應(yīng)時間。因此需要根據(jù)不同的需求對系統(tǒng)進(jìn)行相應(yīng)的優(yōu)化。
3)增強(qiáng)系統(tǒng)容錯能力
所謂容錯是指在故障存在的情況下系統(tǒng)不失效,仍然能夠正常工作的特性。對一些ERP系統(tǒng)來說,任何時候出現(xiàn)的停機(jī)都是災(zāi)難性的,因此對這些系統(tǒng)來說,容錯能力是非常重要的。提高容錯能力可以考慮采用獨立冗余磁盤陣列來保證系統(tǒng)不會因為磁盤故障而停止工作,對于要求更高的系統(tǒng),可以考慮建立一個備用系統(tǒng),以便在主系統(tǒng)出現(xiàn)故障的時候切換至備用系統(tǒng)上,確保系統(tǒng)不停止工作。
4)改善磁盤I/O性能
讀/寫磁頭和相關(guān)的磁盤取數(shù)臂需要移動才能在SQL Server和Windows所要求的硬盤盤片的位置上進(jìn)行查找和操作。如果數(shù)據(jù)所在的硬盤盤片的位置不連續(xù),硬盤驅(qū)動器要花多得多的時間才能將磁盤取數(shù)臂和讀/寫磁頭移動到所有需要的硬盤盤片位置。如果所需要的數(shù)據(jù)全部位于硬盤盤片上的連續(xù)物理扇區(qū),情況則相反,磁盤取數(shù)臂和讀/寫磁頭只需進(jìn)行很小的移動就能完成所需磁盤I/O操作。連續(xù)和不連續(xù)的情況下所花的時間有很大的差異,每個不連續(xù)的數(shù)據(jù)查找大約要花50毫秒,而連續(xù)的數(shù)據(jù)查找則只需大約2-3毫秒。具體將取決于不連續(xù)的數(shù)據(jù)在磁盤上分布的疏密、硬盤盤片的旋轉(zhuǎn)速度(RPM)以及硬盤的其它物理屬性。連續(xù)I/O有益于提高SQL Server性能。
1.2 優(yōu)化的步驟流程-DETECT
數(shù)據(jù)庫性能優(yōu)化的工作千頭萬緒,最怕的就是像無頭蒼蠅一樣盲目地錯誤嘗試,不但曠日費時,還無法累積經(jīng)驗,團(tuán)隊與個人都難以成長,到下一次碰到性能問題時,還是像無頭蒼蠅一樣,毫無目的地亂試一通。正確的優(yōu)化方法應(yīng)該是擬定步驟分階段執(zhí)行,這樣才能循序漸進(jìn),一步步朝目標(biāo)前進(jìn)[2]。根據(jù)微軟的研究結(jié)果,其過程應(yīng)該分為六個階段:
1) Discover the problem:發(fā)現(xiàn)問題
2) Explore the conditions:探究原因,為問題提供明確的定義與定位
3) Track down possible approaches:提供可能的解決方案
4) Execute the most 1 ikely approach:執(zhí)行最有可能的解決方案
5) Check for success:確認(rèn)解決方案成功與否
6) Tie up loose ends:完成收尾的工作
這雖然不一定適用在每一個優(yōu)化的情境,但它是一個可供參考的方法論。當(dāng)然,可以據(jù)此修正成自己的方法。有固定的準(zhǔn)則后,才可以累積經(jīng)驗并加以分門別類。以下對階段簡要說明。
1.3 發(fā)現(xiàn)問題
這可能是支持?jǐn)?shù)據(jù)庫性能優(yōu)化的專家們花時間最少的一個階段,因為大部分的工作可能都是用戶在做,他們可能已經(jīng)有大量的觀察經(jīng)驗,因此用戶不會希望你再重復(fù)一遍他們已經(jīng)做過多次的事情,他們希望看到你馬上采取一些行動,并希望立竿見影。這個階段用來評斷專業(yè)與否就是看你是否可以立刻問到重點,掌握住各個細(xì)節(jié),而不是在整個優(yōu)化的過程中,來來回回地問相同的問題。這個階段最重要的就是發(fā)現(xiàn)問題,詳述問題,并且正確而詳細(xì)地記錄下來。在進(jìn)入下一步驟之前,進(jìn)行以下兩個方面的判斷:
1) 對于問題是否已經(jīng)有簡明的描述。若無法簡明地描述問題,說明還不了解問題,或者尚未抓住重點。這是常發(fā)生的問題,因為用戶常常說了半天,但是并沒有多少實際上有用的信息,只是讓數(shù)據(jù)庫管理人員暈頭轉(zhuǎn)向,信息雖然多,但起不到實質(zhì)的作用。調(diào)優(yōu)人員可以嘗試將自己聽到的,重新有序地整理一遍再說給用戶聽,看看是否符合大家共通的觀點,若沒有異議,那就有了一個大致正確的開始。
2) 用戶的基線與期待在哪。用戶的基線很重要,它讓你可以比較成果,并有前進(jìn)的目標(biāo)。例如,當(dāng)用戶抱怨“SQL Server跑的太慢了”,這時就要理清他們的“慢”是這么定義的,而什么樣的速度是可以接受的。若他們沒有基線,則需要你為他們建立。
數(shù)據(jù)庫性能調(diào)優(yōu)可能是一再循環(huán)的過程,除了時間難以掌握外,還不一定所有的問題都能解決。不要讓用戶有錯誤的或過高的期待,因為那樣除了讓你有完成不可能完成的任務(wù)之壓力外,還要承受長時間調(diào)優(yōu)后,達(dá)不到用戶期待的結(jié)果而招致的憤怒。在搜尋的過程中盡量不要急躁和恐慌,貿(mào)然進(jìn)入到下一個步驟,那樣只會讓你再一次回到原點,重新定義問題。
2 結(jié)束語
數(shù)據(jù)庫系統(tǒng)調(diào)優(yōu)是一項復(fù)雜的系統(tǒng)工程,是一個復(fù)雜、牽扯面很廣的問題,沒有固定的解決模式,并且調(diào)優(yōu)涉及到數(shù)據(jù)庫系統(tǒng)的各個方面,需要權(quán)衡系統(tǒng)的整體情況進(jìn)行調(diào)優(yōu)。該文根據(jù)SQL Server數(shù)據(jù)庫產(chǎn)品的特點,結(jié)合實際的ERP數(shù)據(jù)庫系統(tǒng)對其性能優(yōu)化進(jìn)行詳細(xì)的研究,并優(yōu)化的步驟流程進(jìn)行詳細(xì)分析。
參考文獻(xiàn):
[1] 劉君堯,秦文,王輝靜.Linux上SYBASE大型數(shù)據(jù)庫優(yōu)化的研究[J].深圳信息職業(yè)技術(shù)學(xué)院學(xué)報,2008,6(4).
[2] 賀志強(qiáng),唐寧九.基于B/S結(jié)構(gòu)的HIS數(shù)據(jù)庫優(yōu)化分析[J].計算機(jī)應(yīng)用,2007,27(z2).