Oracle數據庫段管理有技巧(一)
導讀:在Oracle數據庫中,段往往被用來存儲特定邏輯對象的所有數據。如當建立數據庫表或者索引時,Oracle就會為這些對象分配存儲空間,以存放他們所需要的信息。段是由一個或者多個區(qū)組成的。不要看段是Oracle數據庫中一個不起眼的角色,其實,在其中,仍然隱藏著許多不為人知的管理技巧。若數據庫管理員能夠掌握這些內容,或許,其工作會變得輕松許多。
技巧一:對大表執(zhí)行分區(qū)段
表分區(qū)段用于存儲分區(qū)表中某個分區(qū)的數據。如把某一個表分為幾個區(qū),每個區(qū)就對應一個表分區(qū)段。這么設置是可行的。因為根據段管理規(guī)則,在一個表空間上可以包含一個或者多個段,但是,一個段只能夠存放在一個表空間上。
在實際工作中,我們經常會碰到這種情況。如在一個大型零售企業(yè)的信息化管理系統(tǒng)中,一張銷售表的年數據總量可能會達到幾億條,其數據總容量可能會有近十個G。如果平均分配到每個季度的話,則就有2.5G。此時,如果不對這張銷售表進行分區(qū)分段管理的話,則這一年的銷售記錄都會存儲在一張表中。此時,如果需要做年度分析的話,那么數據庫的性能將會受到很大的影響。如現在用戶想知道六、七月份空調的銷量變化情況,此時數據庫就需要掃描整個數據表中近10G的紀錄。這需要用戶等待比較長的時間。
但是,此時若數據庫管理員在數據庫設計的時候,就能夠預計到這種情況,對銷售表進行分區(qū)分段管理。即把這張銷售表分區(qū)段管理,也就是說,把銷售表分為四個分區(qū)段,每個季度一個區(qū)段。如此的話,若要統(tǒng)計六、七月份的空調銷售情況,則只需要查詢5G的數據即可,其數據查詢量將近減少了一半。顯然,在實際工作中,如果對大表進行分區(qū)段管理,則可以大大降低I/O次數,并有效提高數據庫查詢性能。若銷售量大的話,甚至可以把銷售表分為十二個區(qū)段,一個月對應一個區(qū)段。
所以,通過使用分區(qū)選項,采用表區(qū)段管理大表,可以將一張大表的數據部署到多個不同的分區(qū)段中。通過這種管理方式,可以降低I/O(輸入輸出)讀取次數,最終提高I/O性能。這是數據庫優(yōu)化專家在提高數據庫性能時,經常用到的一種手段。特別是在零售行業(yè)的信息化管理系統(tǒng)中,經常被用到。
技巧二:合理利用索引組織表段
在Oracle數據庫中,跟索引相關的表段主要有三個,分別為索引段、索引分區(qū)段與索引組織表段。
索引段主要用來存儲索引數據。當數據庫管理員建立索引時,數據庫系統(tǒng)就會自動為索引建立相應的索引段,其名字跟索引的名稱相同。在對索引段進行管理時,有一個基本的原則,即一個索引段只能夠存放在一個表空間中。
索引分區(qū)段主要用來存儲分區(qū)索引某個分區(qū)的數據。他跟筆者上面所說的表分區(qū)段類似。每個分區(qū)對應一個索引分區(qū)段。通過使用分區(qū)選項可以將大索引的數據部署到幾個不同的分區(qū)段中,從而達到降低輸入輸出次數、提高數據庫性能的目的。不過其在管理中,比表分區(qū)段多了一個限制條件,即索引分區(qū)只能夠建立在分區(qū)表上,而不能夠建立在普通表上。其他的管理跟分區(qū)表段類似,就不再重復闡述了。
索引組織表是以B數結構來組織表數據的,其對應的段就是索引組織表段。其管理方式跟索引段類似。當數據庫管理員建立索引時,就會自動創(chuàng)建這個段,用來保存相關的數據。
現在擺在數據庫管理員面前,就有一個難題。在什么時候用索引段,什么時候用索引組織表段,又在什么時候采用索引分區(qū)段呢?為此,筆者給出一個建議,供大家參考。
通常情況下,如果表中的數據經常需要引用主鍵列萊檢索的話,則可以考慮建立索引組織表,即通過索引組織段來管理。因為如果建立索引組織表段,則表和表主鍵索引的數據會存放在索引段中。從而提高查詢的速度。而在普通表中,表與索引數據分別存放在表段與索引段中。這就是兩者最本質的區(qū)別。另外需要提醒的是,如果數據庫管理員建立索引組織表時,數據庫開發(fā)人員必須要定義主鍵列。否則的話,就會以失敗告終。
而如果索引比較大的話,則可以將大索引的數據部署道幾個不同的分去段中,這可以有效提高數據庫的性能。
這就是我要為大家介紹的Oracle數據庫段管理有技巧,這只是一部分,先為大家介紹到這,以后還會繼續(xù)為大家介紹。
【編輯推薦】