性能管理的許多實(shí)例已經(jīng)告訴我們,系統(tǒng)性能緩慢危害不亞于系統(tǒng)直接崩潰一天,但在大型機(jī)上調(diào)整數(shù)據(jù)庫卻相對輕松許多,只需花很少的時間通常就能獲得較大的性能提升。
隨著時間的推移,廠商已經(jīng)增加了許多無需用戶干預(yù)的方式來執(zhí)行數(shù)據(jù)庫重組,使得重組變得更加容易被用戶忽視,直到數(shù)據(jù)庫響應(yīng)慢得他們無法接受,管理員想知道為什么新數(shù)據(jù)庫的響應(yīng)速度沒有達(dá)到他們的預(yù)期,本文將介紹重組時的注意事項(xiàng),以減少讓你頭疼的麻煩事。
關(guān)于數(shù)據(jù)庫優(yōu)化
數(shù)據(jù)庫重組修復(fù)數(shù)據(jù)存儲次佳選擇 - 一個和死亡、稅收一樣不可避免的問題,從你啟動數(shù)據(jù)庫的那一刻起,數(shù)據(jù)就開始不斷堆積,性能也從最開始的最優(yōu)狀態(tài)逐漸下降,這是如何發(fā)生的?大致有以下幾種途徑:
數(shù)據(jù)庫存儲和一些數(shù)據(jù)類型成比例,和另一些不成比例增長:
我們增加新的數(shù)據(jù)類型,應(yīng)用舊的(不適當(dāng)?shù)模┑膬?yōu)化技術(shù);
我們使用數(shù)據(jù)庫的方式不同了,特別是使用新的查詢模式時,它們與舊的數(shù)據(jù)存儲設(shè)計不匹配;
相同磁盤上競爭相同存儲的其它數(shù)據(jù)存儲,導(dǎo)致數(shù)據(jù)庫選擇次佳優(yōu)化存儲。
隨著時間的推移,這些趨勢降低了應(yīng)用程序的性能,在一個不斷有更新的聯(lián)機(jī)事務(wù)處理(OLTP)數(shù)據(jù)庫中,一年時間足以引起5%到15%的性能下降,以后每年性能也會以類似的比例逐漸下降,根據(jù)以往的經(jīng)驗(yàn),這與是否在大型機(jī)上運(yùn)行數(shù)據(jù)庫沒有多大的關(guān)系,其它環(huán)境也和這差不多,事實(shí)上,在諸如Prime這樣的平臺上,虛擬存儲訪問方法(VSAM)的低版本意味著每增加100個用戶它的辦公自動化套件可能需要多花10分鐘啟動,因?yàn)橛脩魯?shù)據(jù)在磁盤上呈碎片化,除非你重組它們,但用戶哪里知道重組他們的數(shù)據(jù)呢。
現(xiàn)在我們執(zhí)行一次大型機(jī)數(shù)據(jù)庫重組修復(fù)數(shù)據(jù)存儲次佳選擇問題,重組主要是優(yōu)化它當(dāng)前狀態(tài)的存儲,重組可以改變索引格式,讓索引更少訪問磁盤,從磁盤更快地加載數(shù)據(jù),重組可以整合磁盤上的數(shù)據(jù),以便磁盤柱面讀/寫頭不從磁盤柱面的一端到另一端來回折騰,這和Windows系統(tǒng)中的磁盤碎片整理程序類似,此外,重組可以改變緩存大小,以免數(shù)據(jù)庫在磁盤和內(nèi)存之間頻繁執(zhí)行不必要的數(shù)據(jù)交換,但重組僅僅是一個時間點(diǎn)的改進(jìn),時間和利用將最終導(dǎo)致數(shù)據(jù)庫性能下降。
自從我30年前作為CCA MODEL 204大型機(jī)數(shù)據(jù)庫管理員首次見到重組以來,它已經(jīng)有了巨大的改進(jìn),現(xiàn)在,大多數(shù)主流大型機(jī)數(shù)據(jù)庫廠商已經(jīng)實(shí)現(xiàn)自動化在線重組,這意味著你的大多數(shù)大型機(jī)數(shù)據(jù)庫,取決于你的版本,以及你是否需要啟用重組,它們都提供了自動化重組,周期大約1年一次,包括需要24/7可用的大型機(jī)數(shù)據(jù)庫重組支持。
但是在執(zhí)行數(shù)據(jù)庫重組時也需要注意一些事情,首先,雖然許多現(xiàn)代數(shù)據(jù)庫廠商都提供了自動化重組功能,但不能保證你的數(shù)據(jù)庫就剛好具備這項(xiàng)功能,即使可以使用自動重組,也沒有哪個廠商愿為你的系統(tǒng)提供特殊優(yōu)化,其次,你的重組不一定會經(jīng)常運(yùn)行,性能一樣會逐漸下降,如果經(jīng)常在線運(yùn)行重組,其自身引起的性能開銷也很大,另外,如果廠商沒有提醒你,極有可能沒有啟用重組功能。
關(guān)于數(shù)據(jù)庫重組的思考
最好安排每年檢查一次你的數(shù)據(jù)庫重組功能,包括信息管理系統(tǒng)(IMS)和VSAM,并作出下面這些決定:
首先,確定你是在線還是離線運(yùn)行重組,離線重組可能需要數(shù)據(jù)庫和應(yīng)用程序停機(jī)許久,當(dāng)你有足夠的停機(jī)時間,或停機(jī)不會引起業(yè)務(wù)受損時,離線重組才可取,同樣,在線重組也會使其它進(jìn)程變慢,當(dāng)數(shù)據(jù)庫性能處于峰值時不建議執(zhí)行在線重組。
接下來確定你執(zhí)行重組的頻率,你應(yīng)該對一年內(nèi)數(shù)據(jù)庫和數(shù)據(jù)存儲的變化有清晰的了解,例如,有多少不同類型的索引發(fā)生了變化,有多少更新,有多少新建和修改目錄元數(shù)據(jù)定義,認(rèn)真檢查每一個因素,然后再決定每存儲1GB數(shù)據(jù)后性能的總體趨勢變化,如果數(shù)據(jù)庫變化較快,你應(yīng)該將重組頻率加快,如果變化較慢,就盡量少執(zhí)行重組。
根據(jù)以往的經(jīng)驗(yàn),每發(fā)生1%的增長,意味著1%的下降,如果是在線重組,要確定好放在一年中的哪一天,什么時間執(zhí)行,大多數(shù)大型機(jī)數(shù)據(jù)庫管理員都清楚什么時候數(shù)據(jù)庫最忙,什么時候最清閑,如果你重組的當(dāng)口遇到了數(shù)據(jù)庫事務(wù)峰值,你應(yīng)該立即停止重組,重新安排別的時間執(zhí)行。
例如,假設(shè)你在英國增加了一個國外子公司,新的峰值將會比美國提前5個小時抵達(dá),按年來說也一樣,例如,其它國家的年終假期和美國也不一樣,因此,如果你服務(wù)于一家全球公司,需要注意各國的年終搶購時間。
最后,確定你是否需要修改數(shù)據(jù)庫在磁盤上的空間分配,雖然這不是做重組決定,但它與重組有很大的關(guān)系,特別是,你數(shù)據(jù)庫性能下降是因其他數(shù)據(jù)存儲競爭相同空間引起的,你可以通過對你的磁盤柱面做一個簡單的映射來確定 - 特別是當(dāng)你使用存儲區(qū)域網(wǎng)絡(luò)時 - 顯示你數(shù)據(jù)庫的數(shù)據(jù)存儲夾雜了多少其它數(shù)據(jù),如IMS記錄之間的空白,你應(yīng)該通過重新定義數(shù)據(jù)庫的物理磁盤分配來預(yù)防出現(xiàn)這種情況。