隨著數(shù)據(jù)庫(kù)應(yīng)用范圍的擴(kuò)大與硬盤(pán)價(jià)格的直線(xiàn)下降,現(xiàn)在在一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上放置多個(gè)硬盤(pán)對(duì)于企業(yè)來(lái)說(shuō)已經(jīng)不是很奢侈的事情。不過(guò)這對(duì)數(shù)據(jù)庫(kù)管理員來(lái)說(shuō)又提出了一個(gè)新的挑戰(zhàn)。因?yàn)閿?shù)據(jù)庫(kù)管理員出于性能與安全的考慮,需要學(xué)會(huì)在硬盤(pán)之間分布關(guān)鍵數(shù)據(jù)文件。如需要把數(shù)據(jù)庫(kù)系統(tǒng)的重做日志、歸檔日志與用來(lái)恢復(fù)的數(shù)據(jù)文件分開(kāi)存放等等。筆者現(xiàn)在在維護(hù)一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,硬盤(pán)數(shù)量就達(dá)到4塊。筆者就以這臺(tái)數(shù)據(jù)庫(kù)為例,跟各位分享一下如何在硬盤(pán)之間分布關(guān)鍵數(shù)據(jù)文件。
一、重做日志、歸檔日志與用來(lái)恢復(fù)的備份文件分開(kāi)存放。
在Oracle數(shù)據(jù)庫(kù)中有幾個(gè)比較重要的文件,包括重做日志文件、歸檔日志文件、數(shù)據(jù)文件與用來(lái)恢復(fù)數(shù)據(jù)的備份文件等等。如果當(dāng)數(shù)據(jù)庫(kù)發(fā)生故障需要恢復(fù)數(shù)據(jù)的話(huà),則需要用到備份文件與重做日志文件,有時(shí)候還需要用到歸檔日志文件。為此需要把這些文件跟數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)文件分開(kāi)來(lái)存放,如可以把它們存放在不同的硬盤(pán)上。如此的話(huà),當(dāng)存放數(shù)據(jù)文件的硬盤(pán)發(fā)生物理?yè)p壞時(shí),也可以馬上通過(guò)備份文件與重做日志文件進(jìn)行恢復(fù)。
另外需要注意的是,用來(lái)存放備份文件的硬盤(pán)如果出現(xiàn)損壞的話(huà),由于基本上不會(huì)影響數(shù)據(jù)庫(kù)的正常運(yùn)行,所以比較難以發(fā)現(xiàn)。但是此時(shí)數(shù)據(jù)庫(kù)的備份就可能會(huì)發(fā)生錯(cuò)誤,這對(duì)于后續(xù)數(shù)據(jù)庫(kù)恢復(fù)具有致命的影響。為此數(shù)據(jù)庫(kù)管理員還需要采取一定的策略,當(dāng)備份作業(yè)失敗時(shí)能夠讓數(shù)據(jù)庫(kù)自動(dòng)告知管理員。這可以最大限度的避免存儲(chǔ)備份文件的硬盤(pán)損壞對(duì)后續(xù)數(shù)據(jù)還原造成的致命打擊。
二、分開(kāi)存儲(chǔ)數(shù)據(jù)表文件與索引文件。
為了提升數(shù)據(jù)庫(kù)性能,在硬件條件允許的情況下最好能夠把存儲(chǔ)文件與索引文件分開(kāi)來(lái)存放,特別是某張數(shù)據(jù)表如果比較大,而用戶(hù)訪(fǎng)問(wèn)的頻率又比較高的話(huà),則最好把這這張表與其對(duì)應(yīng)的索引文件存放在不同的硬盤(pán)上,這對(duì)于提高數(shù)據(jù)庫(kù)的性能有非常顯著的效果。因?yàn)榘褦?shù)據(jù)和索引文件分別放置在不同的硬盤(pán)上,如此當(dāng)表和索引被同時(shí)訪(fǎng)問(wèn)時(shí)(在Where條件中引用了索引列),數(shù)據(jù)庫(kù)系統(tǒng)就不會(huì)訪(fǎng)問(wèn)同一個(gè)硬盤(pán),而會(huì)同時(shí)訪(fǎng)問(wèn)兩個(gè)硬盤(pán)。這就可以避免硬盤(pán)之間的爭(zhēng)用。所以把經(jīng)常需要訪(fǎng)問(wèn)的數(shù)據(jù)表與索引文件分開(kāi)來(lái)存放,會(huì)給我們帶來(lái)不少的驚喜。
另外,也可以把數(shù)據(jù)庫(kù)系統(tǒng)中的一些關(guān)鍵數(shù)據(jù)文件分開(kāi)來(lái)存放,可以有效避免硬盤(pán)爭(zhēng)用給數(shù)據(jù)庫(kù)性能帶來(lái)的一個(gè)負(fù)面影響,可以解決硬盤(pán)瓶頸問(wèn)題。一般來(lái)說(shuō)表的連接方式會(huì)影響到數(shù)據(jù)庫(kù)的性能,會(huì)增加硬盤(pán)爭(zhēng)用的幾率。但是若能夠把經(jīng)常需要的表與索引分開(kāi)放置的話(huà),即使表與表之間的連接方式不怎么合理,那么其負(fù)面影響也會(huì)大大的降低。因?yàn)榇藭r(shí)不怎么會(huì)導(dǎo)致硬盤(pán)爭(zhēng)用的現(xiàn)象。
三、增加硬盤(pán)以避免硬盤(pán)爭(zhēng)用。
有時(shí)候在剛開(kāi)始部署數(shù)據(jù)庫(kù)系統(tǒng)的時(shí)候,可能沒(méi)有想到利用多塊硬盤(pán)來(lái)避免硬盤(pán)爭(zhēng)用的現(xiàn)象。在數(shù)據(jù)庫(kù)系統(tǒng)已經(jīng)部署完畢的情況下,若需要增加硬盤(pán)的話(huà),那該如何處理呢?是否需要重新部署數(shù)據(jù)庫(kù)系統(tǒng),還是只要簡(jiǎn)單的把需要分開(kāi)存放的文件復(fù)制過(guò)去就可以了?
筆者認(rèn)為,通常情況下如果數(shù)據(jù)庫(kù)系統(tǒng)還是出于測(cè)試階段,那么最好通過(guò)重新安裝數(shù)據(jù)庫(kù)系統(tǒng),并在安裝的過(guò)程中制定數(shù)據(jù)文件的存放位置來(lái)實(shí)現(xiàn)在不同的硬盤(pán)上存儲(chǔ)關(guān)鍵數(shù)據(jù)文件。但是如果數(shù)據(jù)庫(kù)現(xiàn)在已經(jīng)在用了,那么通過(guò)這種方式的話(huà)就不怎么合理了。但是也不能夠簡(jiǎn)單的把數(shù)據(jù)文件復(fù)制到其他硬盤(pán)上。在數(shù)據(jù)文件的遷移上,沒(méi)有這么簡(jiǎn)單的事情。要在最短的時(shí)間內(nèi)實(shí)現(xiàn)關(guān)鍵數(shù)據(jù)文件的遷移,最好能夠按照以下的幾個(gè)步驟來(lái)操作。
第一步首先于數(shù)據(jù)文件有關(guān)的表空間處于脫機(jī)狀態(tài)。記得筆者以前在表空間的管理上,談到過(guò)最好能夠把不同用途的表放置在不同的表空間上。因?yàn)镺racle數(shù)據(jù)庫(kù)中可以針對(duì)某個(gè)表空間進(jìn)行只讀、脫機(jī)等操作,而不影響其他表空間上的數(shù)據(jù)文件的應(yīng)用。從而使得數(shù)據(jù)庫(kù)的維護(hù)作業(yè)對(duì)于用戶(hù)的正常數(shù)據(jù)訪(fǎng)問(wèn)的影響降低到最低。數(shù)據(jù)庫(kù)管理員要在數(shù)據(jù)庫(kù)正常聯(lián)機(jī)的情況下遷移數(shù)據(jù)文件的話(huà),就需要把設(shè)置跟需要遷移的數(shù)據(jù)文件有關(guān)的表空間脫機(jī)。
把數(shù)據(jù)文件復(fù)制到新的硬盤(pán)上,并且用新數(shù)據(jù)文件位置為表空間重命名數(shù)據(jù)文件。如果新上的硬盤(pán)跟原有的硬盤(pán)在性能上有差異的話(huà),此時(shí)就有一個(gè)細(xì)節(jié)需要注意。即把什么文件保留在原來(lái)的硬盤(pán)上,而把什么文件移植到性能比較高的新硬盤(pán)中。把合適的文件遷移出去,這可以讓移植后的數(shù)據(jù)庫(kù)性能有更大的提升。如原先在硬盤(pán)中有重做日志文件與數(shù)據(jù)文件。現(xiàn)在需要出于安全與性能的考慮,需要把某個(gè)文件遷移到新的硬盤(pán)中。而新采用的硬盤(pán)性能比較好的情況下,那么最好把重做日志文件遷移出去。這會(huì)取得比較好的效果。
第三步把原先脫機(jī)的表空間重新啟用即可。可見(jiàn)如果表空間設(shè)置的比較合理的話(huà),那么在關(guān)鍵數(shù)據(jù)文件遷移的時(shí)候基本上不會(huì)對(duì)用戶(hù)的訪(fǎng)問(wèn)造成負(fù)面影響。所以說(shuō)表空間的規(guī)劃與建立對(duì)于數(shù)據(jù)庫(kù)的維護(hù)是非常重要的。因?yàn)樵贠racle數(shù)據(jù)庫(kù)中可以專(zhuān)門(mén)針對(duì)表空間來(lái)進(jìn)行管理,如備份、聯(lián)機(jī)脫機(jī)管理等等。其實(shí)一個(gè)表空間就好像是一個(gè)小的數(shù)據(jù)庫(kù)一樣,可以進(jìn)行大部分的日常數(shù)據(jù)庫(kù)維護(hù)工作。
一、確定工作繁忙的數(shù)據(jù)文件。
關(guān)鍵數(shù)據(jù)文件在不同的硬盤(pán)上分開(kāi)放置到底能夠取得數(shù)據(jù)庫(kù)性能的多少提升,這主要是跟數(shù)據(jù)文件訪(fǎng)問(wèn)的繁忙程度有關(guān)。如在Oracle數(shù)據(jù)庫(kù)中,總共部署由六個(gè)數(shù)據(jù)文件。其中四個(gè)數(shù)據(jù)文件比較繁忙,另外兩個(gè)數(shù)據(jù)文件用戶(hù)不怎么訪(fǎng)問(wèn)。此時(shí)數(shù)據(jù)庫(kù)管理員如果把不怎么訪(fǎng)問(wèn)的數(shù)據(jù)文件遷移到其他硬盤(pán)上,那么對(duì)數(shù)據(jù)庫(kù)性能的提升沒(méi)有多少幫助。為此要提升這個(gè)效果,就需要評(píng)估一下,哪些數(shù)據(jù)文件用戶(hù)訪(fǎng)問(wèn)的比較頻繁,然后再有針對(duì)性的進(jìn)行遷移。利用專(zhuān)業(yè)的術(shù)語(yǔ)來(lái)說(shuō),就是要確定數(shù)據(jù)文件上的I/O,將大量使用的數(shù)據(jù)文件移動(dòng)到單獨(dú)的硬盤(pán)上以分布I/O。
不過(guò)要確定哪個(gè)數(shù)據(jù)文件的使用頻率比較高,有比較大的I/O,不是一件簡(jiǎn)單的事情。通常來(lái)說(shuō),可以從兩個(gè)方面來(lái)評(píng)估數(shù)據(jù)文件的使用頻率以及對(duì)應(yīng)的I/O。
一是要靠數(shù)據(jù)庫(kù)管理員的經(jīng)驗(yàn)。往往所設(shè)計(jì)的數(shù)據(jù)庫(kù)用途不同,其數(shù)據(jù)文件的使用頻率以及對(duì)應(yīng)的I/O有一個(gè)規(guī)律。如這個(gè)數(shù)據(jù)庫(kù)系統(tǒng)對(duì)應(yīng)的應(yīng)用系統(tǒng)是一個(gè)決策管理系統(tǒng),則其數(shù)據(jù)文件中數(shù)據(jù)表的更改不會(huì)很多,大部分是對(duì)視圖文件的訪(fǎng)問(wèn)。但是如果數(shù)據(jù)庫(kù)用于一些事務(wù)型管理系統(tǒng)的話(huà),則剛好相反。如一個(gè)ERP系統(tǒng)需要用到Oracle數(shù)據(jù)庫(kù)系統(tǒng),則其相關(guān)的基礎(chǔ)表插入、修改動(dòng)作會(huì)比較頻繁,如采購(gòu)訂單、銷(xiāo)售訂單等等都需要對(duì)這些基礎(chǔ)表進(jìn)行大量的訪(fǎng)問(wèn)。故與此對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件訪(fǎng)問(wèn)的頻率就會(huì)比較高。此時(shí)把這些文件與其它訪(fǎng)問(wèn)的比較少的文件分開(kāi)來(lái)放置就能夠起到不錯(cuò)的效果。另外即使在同一應(yīng)用系統(tǒng)中,其模塊不同,使用的頻率也不同。如在一個(gè)ERP系統(tǒng)中,基本管理模塊基本上不怎么使用,只有在系統(tǒng)初始化的時(shí)候需要用到。而對(duì)于庫(kù)存管理、財(cái)務(wù)管理模塊所對(duì)應(yīng)的數(shù)據(jù)表訪(fǎng)問(wèn)頻率就比較高了。為此在數(shù)據(jù)庫(kù)規(guī)劃的時(shí)候,可以考慮根據(jù)模塊使用頻率的不同,來(lái)規(guī)劃數(shù)據(jù)表與表空間。可以把使用模塊高的數(shù)據(jù)表與索引放置在不同的硬盤(pán)上;而把使用頻率低的數(shù)據(jù)表與其對(duì)應(yīng)的索引放置在相同的硬盤(pán)上。這主要是靠數(shù)據(jù)庫(kù)管理員的經(jīng)驗(yàn)。其設(shè)置的數(shù)據(jù)庫(kù)案例越多,往往對(duì)這方面就會(huì)有比較深刻的直觀(guān)印象。這對(duì)于其規(guī)劃數(shù)據(jù)表與表空間的位置,具有很大的幫助。#p#分頁(yè)標(biāo)題#e#
二是通過(guò)數(shù)據(jù)庫(kù)提供的工具。
如在數(shù)據(jù)庫(kù)企業(yè)管理器中提供了一個(gè)數(shù)據(jù)庫(kù)文件度量的工具。利用這個(gè)工具可以確定發(fā)生在每個(gè)數(shù)據(jù)庫(kù)文件上的I/O。但是使用這個(gè)工具有一個(gè)缺陷,即其只有在數(shù)據(jù)庫(kù)系統(tǒng)投入使用后才能夠進(jìn)行測(cè)量與評(píng)估。也就是說(shuō),不能夠在數(shù)據(jù)庫(kù)設(shè)計(jì)與部署的時(shí)候,就做好相關(guān)的規(guī)劃工作。也就是說(shuō),在生產(chǎn)服務(wù)器上進(jìn)行關(guān)鍵數(shù)據(jù)文件存放位置的調(diào)整,或多或少會(huì)對(duì)用戶(hù)的數(shù)據(jù)庫(kù)庫(kù)訪(fǎng)問(wèn)產(chǎn)生不利的影響。而當(dāng)數(shù)據(jù)庫(kù)在正常使用過(guò)程中來(lái)進(jìn)行調(diào)整的話(huà),這對(duì)于數(shù)據(jù)庫(kù)管理員的水平也提出了比較高的要求。因?yàn)榇藭r(shí)不允許數(shù)據(jù)庫(kù)管理員出現(xiàn)一點(diǎn)紕漏,否則的話(huà)很可能會(huì)對(duì)數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)造成破壞。所以雖然這種方式是可行的,但是筆者并不推薦這么做。