條帶化的設(shè)置_第1頁
條帶化的設(shè)置_第2頁
條帶化的設(shè)置_第3頁
條帶化的設(shè)置_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

條帶化的設(shè)置由于現(xiàn)在的存儲技術(shù)成熟、成本降低,大多數(shù)系統(tǒng)都采用條帶化來實現(xiàn)系統(tǒng)的IO負(fù)載分擔(dān)。如果操作系統(tǒng)有LVM(LogicalVolumeManager邏輯卷管理器)軟件或者硬件條帶設(shè)備,我們就可以利用這些工具來分布IO負(fù)載。當(dāng)使用LVM或者硬件條帶時,決定因素是條帶深度(stripedepth)和條帶寬度(stripewidth):?條帶深度指的是條帶的大小,也叫條帶單元;?條帶寬度指的是條帶深度的產(chǎn)量或者一個條帶集中的驅(qū)動數(shù);需要根據(jù)系統(tǒng)的IO要求來合理的選擇這些數(shù)據(jù)。對于Oracle數(shù)據(jù)庫系統(tǒng)來數(shù),比較合理的條帶深度是從256K到1M。下面分析影響條帶深度和條帶寬度的影響因素。2.2.1.1條帶深度為了提高IO效率,我們要盡量使一次邏輯IO請求由一塊磁盤的一次物理IO請求。因而影響條帶的一個重要因素就是一次邏輯IO請求的大小。此外,系統(tǒng)中IO的并發(fā)度不同我們對條帶的配置要求也不同。例如,在高并發(fā)度且IO請求的大小都比較小的情況下,我們希望一塊磁盤能同時響應(yīng)多個【。操作;而在那些存在大IO請求的低并發(fā)度系統(tǒng)中,我們可能就需要多塊磁盤同時響應(yīng)一個IO請求。無論是一個磁盤還是多個磁盤響應(yīng)IO請求,我們的一個原則是讓一次邏輯IO能被一次處理完成。下面先看下影響IO大小的操作系統(tǒng)和Oracle的相關(guān)參數(shù):db_block_size:Oracle中的數(shù)據(jù)塊大小,也決定了Oracle一次單個IO請求中的數(shù)據(jù)塊的大小;db_file_multiblock_read_count在多數(shù)據(jù)塊讀時,一次讀取數(shù)據(jù)塊的數(shù)量,它和參數(shù)db_block_size一起決定了一次多數(shù)據(jù)塊讀的大小,它們的乘積不能大于操作系統(tǒng)的最大IO大小;?操作系統(tǒng)的數(shù)據(jù)塊大小:這個參數(shù)決定拉RedoLog和ArchiveLog操作時的數(shù)據(jù)塊大小,對于大多數(shù)Unix系統(tǒng)來說,該值為512K;?最大操作系統(tǒng)IO大小:決定了一次單個的IO操作的IO大小的上限,對于大多數(shù)Unix系統(tǒng)來說,由參數(shù)max_io_size設(shè)置;sortareasize:內(nèi)存中sortarea的大小,也決定了并發(fā)排序操作時的IO大小;hash_area_size:內(nèi)存中hasharea的大小,也決定了哈希操作的IO大小。其中,前面兩個是最關(guān)鍵的兩個參數(shù)。在OLTP系統(tǒng)中,會存在大量小的并發(fā)的IO請求。這時就需要考慮選擇比較大的條帶深度。使條帶深度大于IO大小就稱為粗粒度條帶(CoarseGrainStriping)。在高并行度系統(tǒng)中,條帶深度為(n*db_block_size),其中n為大于1的整數(shù)。通過粗粒度條帶能實現(xiàn)最大的IO吞吐量(一次物理IO可以同時響應(yīng)多個并發(fā)的邏輯IO)。大的條帶深度能夠使像全表掃描那樣的多數(shù)據(jù)塊讀操作由一個磁盤驅(qū)動來響應(yīng),并提高多數(shù)據(jù)塊讀操作的性能。在低并發(fā)度的DSS系統(tǒng)中,由于IO請求比較序列化,為了避免出現(xiàn)熱點(diǎn)磁盤,我們需要避免邏輯IO之由一塊磁盤處理。這是,粗粒度條帶就不適合了。我們選擇小的條帶深度,使一個邏輯IO分布到多個磁盤上,從而實現(xiàn)IO的負(fù)載均衡。這就叫細(xì)粒度條帶。條帶深度的大小為(n*db_block_size),其中n為小于多數(shù)據(jù)塊讀參數(shù)(db_file_multiblock_read_count)大小的整數(shù)。另外,IO過程中,你無法保證Oracle數(shù)據(jù)塊的邊界能和條帶單元的大小對齊。如果條帶深度大小和Oracle數(shù)據(jù)塊大小完全相同,而它們的邊界沒有對齊的話,那么就會存在大量一個單獨(dú)的IO請求被兩塊磁盤來完成。在OLTP系統(tǒng)中,為了避免一個邏輯IO請求被多個物理IO操作完成,條帶寬度就需要設(shè)置為兩倍或者兩倍以上于Oracle數(shù)據(jù)塊大小。例如,如果條帶深度是IO大小的N倍,對于大量并發(fā)IO請求,我們可以保證最少有(N-1)/N的請求是由一塊磁盤來完成。2.2.1.2條帶寬度正如我們前面所述,無論是一個還是多個磁盤響應(yīng)一個邏輯IO,我們都要求IO能被一次處理。因而在確定了條帶深度的基礎(chǔ)上,我們需要保證條帶寬度>=IO請求的大小/條帶深度。此外卜,考慮到以后系統(tǒng)容量的擴(kuò)充,我們也需要規(guī)劃好條帶寬度。如今大多數(shù)LVM都支持在線動態(tài)增加磁盤。也就是在磁盤容量不足時,我們可以隨時將新磁盤加入到一個已經(jīng)使用的邏輯卷中。這樣的話,我們在設(shè)置邏輯卷時就可以簡單地將所有磁盤都?xì)w入到一個卷中去。但是,有些LVM可能還不支持動態(tài)增加磁盤。這時我們就需要考慮以后的容量擴(kuò)充對IO均衡的影響了。因為你新增加的磁盤無法加入原有卷,而需要組成一個新的卷。但一般擴(kuò)充的容量和原有容量比較相對比較小,如果原有卷的條帶寬度比較大的話,新增加的卷的條帶寬度無法達(dá)到其大小,這樣就會使新、舊卷之間出現(xiàn)IO失衡。例如,一個系統(tǒng)的初始配置是一個包含4塊磁盤、每塊磁盤大小為16G的單一邏輯卷。磁盤總的大小是1匚隨著數(shù)據(jù)庫的數(shù)據(jù)增長,需要增加80G的空間。我們把新增加的5個16G磁盤再組成一個邏輯卷。這樣就會導(dǎo)致兩個卷上的IO失衡。為了避免這種情況。我們可以將原有磁盤配置成每個條帶寬度為8個磁盤的8個邏輯卷,這樣在新增加磁盤時可以也增加為8個磁盤的新卷。但必須要保證8個磁盤的條帶寬度能夠支持系統(tǒng)的每秒IO吞吐量。如果你的條帶寬度設(shè)置得比較小,就需要估算出你的各個數(shù)據(jù)庫文件的IO負(fù)載,并根據(jù)負(fù)載量不同將他們分別部署到不同卷上一分擔(dān):。負(fù)載。2.2.2 人工條帶如果系統(tǒng)不支持LVM或者硬件條帶,IO負(fù)載就必須由DBA根據(jù)數(shù)據(jù)庫文件的IO負(fù)載不同手工將他們分散到各個磁盤上去以保證整個系統(tǒng)的:。負(fù)載均衡。有許多DBA會將哪些使用頻率非常高的表和它的索引分開存儲但實際上這種做法并不正確。在一個事務(wù)中,索引會先被讀取到然后再讀取表,它們的1。操作是有前后順序的,因此索引和表存儲在同一個磁盤上是沒有沖突的。僅僅因為一個數(shù)據(jù)文件即包含了索引又包含了數(shù)據(jù)表而將它分割是不可取的。我們需要根據(jù)文件上的:。負(fù)載是否已經(jīng)影響到了數(shù)據(jù)庫的性能來決定是否將數(shù)據(jù)文件分割。為了正確分布文件,我們首先必須先了解各個數(shù)據(jù)庫文件的1。負(fù)載需求以及IO系統(tǒng)的處理能力。鑒定出每個文件的IO吞吐量。找出哪些文件的IO吞吐率最高而哪些IO量很少,將它們分散分布到所有磁盤上去以平衡IO吞吐率。如果你不了解或者無法預(yù)計文件的IO負(fù)載,就只能先估計他們的IO負(fù)載來規(guī)劃文件分布,在系統(tǒng)運(yùn)行過程中再做調(diào)整。2.2.3文件分離無論是采用操作系統(tǒng)條帶化還是手工IO分布方式,如果IO系統(tǒng)或者IO規(guī)劃布置無法滿足IO吞吐率的要求,我們就需要考慮將高IO吞吐率的文件和其他文件分離。我們可以在存儲規(guī)劃階段或者系統(tǒng)運(yùn)行階段找出那樣的文件。除了IO吞吐率,在決定是否分割文件時,我們還需要考慮可恢復(fù)性以及數(shù)據(jù)容量擴(kuò)張問題。但是在分割文件之前,一定要確認(rèn)存在IO瓶頸,然后再根據(jù)產(chǎn)生IO瓶頸的數(shù)據(jù)定位到存在高IO吞吐率的文件(熱點(diǎn)文件)。2.2.3.1表、索引和臨時表空間如果具有高IO吞吐率的數(shù)據(jù)文件屬于包含表和索引的表空間,我們就需要找出這些文件的IO是否可以通過SQL語句調(diào)優(yōu)或者優(yōu)化應(yīng)用程序來降低。如果具有高IO吞吐率的數(shù)據(jù)文件屬于臨時表空間,那我們就需要檢查是否可以通過避免或調(diào)優(yōu)SQL語句的排序操作來降低IO。經(jīng)過應(yīng)用調(diào)優(yōu)后,如果IO分布仍然無法滿足IO吞吐的要求,我們就需要考慮分離高IO吞吐率的數(shù)據(jù)文件了。RedoLog文件如果具有高IO吞吐率的文件是RedoLog文件,則需要考慮將RedoLog文件與其他文件分離,可以通過以下配置來實現(xiàn):?將所有RedoLog文件放到?jīng)]有任何其他文件的磁盤上去??紤]到可恢復(fù)性,需要將一個RedoLog組中的成員文件分別放到不同的物理磁盤上去;?將每個RedoLog組放到一個沒有任何其他文件的單獨(dú)磁盤上;?通過操作系統(tǒng)條帶化工具,將RedoLog文件條帶化分布到多個磁盤上去;?不要將RedoLog文件放到RAID5上去RedoLog文件是由LGWR進(jìn)程序列化的寫入的。如果在同一個磁盤上不存在并發(fā)的其他IO操作,寫入效率就更高。我們需要確認(rèn)已經(jīng)沒有其他優(yōu)化調(diào)整空間再考慮分割RedoLog文件。如果系統(tǒng)支持AIO但還沒有激活該特性,可以考慮激活A(yù)IO看是否能解決RedoLog的IO性能瓶頸。歸檔RedoLog如果歸檔變慢,我們也許可以通過使LGWR的寫操作與Archive進(jìn)程的讀操作分離來避免LGWR進(jìn)程魚Archive進(jìn)程直接的IO沖突。我們可以同交替成組存放RedoLog文件來實現(xiàn)。例如,我們有四組RedoLog,每組包含兩個Log文件:(Al,A2)、(Bl,B2)、(C1,C2)、(Dl,D2)。我們就可以以下面這種存放方式將它們分布存儲到四個磁盤上去來實現(xiàn)磁盤分離訪問:(Al,Cl)、(A2、C2)、(Bl,Dl)、(B2,D2)。當(dāng)LGWR進(jìn)程做日志切換時,如從A組切換到B組,LGWR開始向B組寫RedoLog(第三、四塊磁盤),而Archive進(jìn)程則從B組讀取數(shù)據(jù)(第一、二塊磁盤)寫入歸檔文件中去,他們分別訪問的是不同磁盤,因而避免了10沖突。2.3三種簡單的配置方法這里給出三種簡單的操作系統(tǒng)I0配置的例子,包括如何簡單地計算來決定磁盤的拓?fù)浣Y(jié)構(gòu)、條帶深度等等。將所有文件條帶化到所有磁盤上去IO配置最簡單的方法就是建立一個大的邏輯卷,將所有磁盤都條帶化到這個卷中去。考慮到可恢復(fù)性,這個卷需要被鏡像(RAID1)。每個磁盤的條帶深度必須大于頻繁執(zhí)行的IO操作的最大IO大小。這種配置對大多數(shù)情況都能提供足夠的性能支持。將歸檔日志放到另外的磁盤上去在歸檔模式下,如果歸檔文件也和其他文件放在同一個條帶化的卷中,那么當(dāng)歸檔進(jìn)程對RedoLog進(jìn)行歸檔時,會大大增加磁盤的IO負(fù)載。將歸檔日志轉(zhuǎn)移到其他磁盤上有如下好處:?歸檔進(jìn)程效率提高;?當(dāng)歸檔時,其他進(jìn)程受到歸檔進(jìn)程的影響歸檔日志的磁盤數(shù)由歸檔日志產(chǎn)生的頻率以及歸檔存儲容量決定。將RedoLog文件放到另外的磁盤上去在更新非常頻繁的OLTP系統(tǒng)中,RedoLog的寫操作非常頻繁。將R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論