亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

ORACLE數(shù)據(jù)表管理建議

時(shí)間:2024-10-07 09:03:27 Oracle認(rèn)證 我要投稿
  • 相關(guān)推薦

ORACLE數(shù)據(jù)表管理建議

  ORACLE數(shù)據(jù)庫中,表是最基本的內(nèi)容?梢哉f,表設(shè)計(jì)的好壞直接跟數(shù)據(jù)庫的性能相關(guān)。所以,在設(shè)計(jì)表的時(shí)候,除了要遵循其固有的數(shù)據(jù)庫準(zhǔn)則之外,還需要看個(gè)人的數(shù)據(jù)庫管理經(jīng)驗(yàn)。

  一、 表該存放在哪里?

  我們都知道,在ORACLE數(shù)據(jù)庫中,使利用空間這個(gè)概念來管理表對(duì)象的。在數(shù)據(jù)庫創(chuàng)建的時(shí)候,數(shù)據(jù)庫中已經(jīng)建立了一些表空間。那么當(dāng)我們新建立表的時(shí)候,這個(gè)新表的位置該放在什么地方呢?這就好像吃飯時(shí)的坐的位置一樣,是有講究的。一般來說,我們在新建表的時(shí)候,至少要遵循如下建議:

  一是在數(shù)據(jù)庫創(chuàng)建的時(shí)候,在數(shù)據(jù)庫中已經(jīng)有了一個(gè)SYSTEM的表空間。一般情況下,這個(gè)表空間中,只包含數(shù)據(jù)字典及Oracle系統(tǒng)對(duì)象。如果我們將我們的表建立在這個(gè)空間上的話,那是要降低數(shù)據(jù)庫的性能的。所以,一般我們是不建議用戶把表格建立在這個(gè)空間上。但是,若我們不只一個(gè)人維護(hù)數(shù)據(jù)庫,如有八個(gè)人共同設(shè)計(jì)數(shù)據(jù)庫系統(tǒng)時(shí),如何才能保證其他用戶不在SYSTEM表空間中建立數(shù)據(jù)庫表格呢?最好的辦法就是通過權(quán)限控制。如我們可以給每個(gè)數(shù)據(jù)庫設(shè)計(jì)人員指定一個(gè)默認(rèn)的表空間,讓他們只能在這個(gè)表空間中建立表格。如此的話,就能防止他們在SYSTEM表空間中建立自己的數(shù)據(jù)表格,從而對(duì)數(shù)據(jù)庫的運(yùn)行性能產(chǎn)生不良影響。所以,若給每個(gè)用戶設(shè)置默認(rèn)表空間的話,那么用戶在建立具體的表時(shí),不用具體指定表空間了。

  二是我們在為某個(gè)應(yīng)用設(shè)計(jì)數(shù)據(jù)庫的時(shí)候,最好先對(duì)表的空間進(jìn)行規(guī)劃。一般情況下,不要把數(shù)據(jù)表隨意的分散到不同的表空間中去。如我們在為一個(gè)ERP系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫的時(shí)候,若把采購部門相關(guān)的表跟銷售部門相關(guān)的表放到兩個(gè)不同的表空間中去,這是不明智的做法。這么處理的話,會(huì)降低某些數(shù)據(jù)庫管理和維護(hù)操作的效率,如數(shù)據(jù)的備份與恢復(fù)操作;而且,也無法集中管理屬于某個(gè)特定應(yīng)用的數(shù)據(jù)。所以,我們一般建議,在規(guī)劃數(shù)據(jù)庫表空間的時(shí)候,把相同應(yīng)用的表放在同一個(gè)表空間中去。如果要區(qū)分不同部門或者不同模塊的表的話,我們可以在表的命名上動(dòng)腦子。如我們在設(shè)計(jì)ERP系統(tǒng)的數(shù)據(jù)庫中,可以根據(jù)其應(yīng)用模塊的不同,在前面加上前綴來進(jìn)行識(shí)別。如跟系統(tǒng)基本配置相關(guān)的表,我們可以用AD為前綴;而跟銷售部門相關(guān)的表,我們可以加上SA前綴等等。如此的話,這些表具體是屬于哪個(gè)模塊的,就一清二楚了。完全沒有必要為此設(shè)置不同的表空間。這是ORACLE數(shù)據(jù)庫初學(xué)者經(jīng)常會(huì)犯的錯(cuò)誤。主要是對(duì)ORACLE表空間的定義不是很熟悉所導(dǎo)致的。

  二、 對(duì)預(yù)計(jì)存儲(chǔ)數(shù)量比較大的表時(shí),要給與額外的重視。

  有些表非常的大。我們這邊說的大,不一定是說結(jié)構(gòu)復(fù)雜,而是指在這個(gè)表格中,預(yù)期會(huì)存儲(chǔ)比較多的數(shù)據(jù)。為了提高對(duì)這個(gè)表格的處理效率,我們在事先要做出一定的安排。否則的話,后續(xù)對(duì)這些大表進(jìn)行查詢、插入等操作的話,速度會(huì)很慢。所以,我們就有必要在數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,先預(yù)先估計(jì)一下表的數(shù)據(jù)存儲(chǔ)量,把一些數(shù)據(jù)量大的表格,做一些額外的設(shè)置。如在ERP軟件的數(shù)據(jù)庫設(shè)置中,一般來說,產(chǎn)品數(shù)據(jù)與物料清單數(shù)據(jù)這兩個(gè)表的數(shù)據(jù)量會(huì)比較大;而從長遠(yuǎn)看的話,銷售訂單、采購訂單、生產(chǎn)訂單、記賬憑證等這種單據(jù)類相關(guān)的表格其數(shù)據(jù)量也會(huì)比較大。一年兩年可能感覺不出來,但是,到十年后,這個(gè)紀(jì)錄數(shù)量就會(huì)很龐大。而像ERP系統(tǒng)這種大型的信息化管理項(xiàng)目,用個(gè)幾十年時(shí)很正常的事情。而且,為了記錄的完整性,也不建議用戶把以前的數(shù)據(jù)刪除。所以,為這種應(yīng)用進(jìn)行數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,要充分考慮這些大表的性能問題。

  具體的來說,設(shè)計(jì)大表的時(shí)候,可以考慮遵循如下的建議。

  一是不要為大表設(shè)置存儲(chǔ)的限制。在ORACLE數(shù)據(jù)庫中,可以為每張表格設(shè)置存儲(chǔ)配額限制。如此的話,表最大容量就不能超過這個(gè)限制。對(duì)于一些數(shù)據(jù)容量比較小的表格,這么設(shè)置時(shí)合理的,可以提高空間的利用率。但是,若數(shù)據(jù)量比較大的話,就不建議事先設(shè)置表的存儲(chǔ)空間了。如ERP系統(tǒng)的銷售訂單表,其剛開始可能記錄量很小,第一年預(yù)計(jì)只有1G的記錄容量,但是,估計(jì)在十年后,這個(gè)記錄容量就會(huì)達(dá)到10G了。在這種情況下,我們怎么來給其設(shè)置存儲(chǔ)空間呢?一開就設(shè)置10G空間,這也是不合理的。而且,設(shè)置存儲(chǔ)空間,就意味著有可能產(chǎn)生存儲(chǔ)碎片,從而影響到數(shù)據(jù)查詢的效率。所以,在數(shù)據(jù)庫表的設(shè)計(jì)過程中,若某些應(yīng)用的表可能會(huì)有比較大的數(shù)據(jù)容量時(shí),建議不要對(duì)其存儲(chǔ)空間做出任何的限制。

  二是要為這大表分配足夠的臨時(shí)空間。如我們使用ERP系統(tǒng)時(shí),要查詢產(chǎn)品資料信息。我們都知道,產(chǎn)品信息的話,有些企業(yè)這個(gè)紀(jì)錄數(shù)非常的龐大。而且在查詢時(shí),我們還會(huì)經(jīng)常的進(jìn)行排序操作。如有時(shí)候會(huì)按照產(chǎn)品編碼對(duì)查詢出來的數(shù)據(jù)進(jìn)行排序。當(dāng)記錄少的話,還好;但是,當(dāng)記錄多的話,這個(gè)排序動(dòng)作,要求具有比較大的臨時(shí)存儲(chǔ)空間。所以,當(dāng)某個(gè)表預(yù)計(jì)會(huì)有很大的記錄數(shù)量的時(shí)候,我們就要給其分配足夠多的臨時(shí)空間。臨時(shí)空間的存儲(chǔ)參數(shù)設(shè)置取決于臨時(shí)表空間的默認(rèn)儲(chǔ)存參數(shù)設(shè)置。我們可以更改這些參數(shù),以達(dá)到我們對(duì)要求。若沒有給大表分配足夠多的臨時(shí)空間的話,則排序的動(dòng)作將會(huì)很慢,而且很可能不成功。

  三是要考慮將表與表的索引分離存放。大表所對(duì)應(yīng)的索引通常也比較大。一般來說,索引的數(shù)量是隨著表記錄的數(shù)量增加而增加,兩者是接近于一個(gè)正比例的關(guān)系。所以,通常表的記錄容量大的時(shí)候,索引數(shù)量也會(huì)很龐大。針對(duì)這種情況,我們考慮突破我們上面講的表空間的規(guī)則定義。而考慮把表和他的索引分別存儲(chǔ)于不同的表空間中,甚至在條件允許的情況下,分別存儲(chǔ)于不同的硬盤中。這么做的好處是什么呢?最大的好處是讓索引比較容易的獲得所需要的連續(xù)的存儲(chǔ)空間,從而提高輸入輸入的效率。通俗的說,就是可以提高數(shù)據(jù)的查詢效率。如不這么處理的話,查詢大容量的記錄的話,數(shù)據(jù)庫可能需要花費(fèi)30秒;而如此設(shè)計(jì)的話,就可能把時(shí)間縮短為10秒。這是一個(gè)很明顯的性能改善。

  三、 如何給表命名?

  上面我在講如何為表分配存儲(chǔ)空間的時(shí)候,已經(jīng)講到過這方面的問題。下面,我就將對(duì)這個(gè)問題進(jìn)行詳細(xì)的描述,以幫助數(shù)據(jù)庫管理員掌握一套好的數(shù)據(jù)庫命名規(guī)則。

  首先,毋庸置疑的,在為標(biāo)命名的時(shí)候,要遵循ORACLE數(shù)據(jù)庫的基本命名規(guī)則,如不能以數(shù)字開頭為表命名,如不能利用數(shù)據(jù)庫的關(guān)鍵字為表命名,如表的名字不能重復(fù)等等。這些是最基本的要求,就不用我多費(fèi)口舌了。除了要遵循這些基本的命名規(guī)則外,在實(shí)際工作中,為了數(shù)據(jù)庫后續(xù)的維護(hù)等方面出發(fā),我們還是要遵循一些額外的規(guī)則。這些規(guī)則跟ORACLE定義的規(guī)則不同。我們所講的規(guī)則沒有約束力,可以說,只是業(yè)界的一些共識(shí)而已。你若不怎么處理,ORACLE數(shù)據(jù)庫也不會(huì)說你錯(cuò)誤,只是后續(xù)維護(hù)的時(shí)候,會(huì)比較麻煩而已。

  一是在對(duì)數(shù)據(jù)庫命名的時(shí)候,最好能跟體現(xiàn)表的分類關(guān)系。如最常見的,我們在設(shè)計(jì)數(shù)據(jù)庫的時(shí)候,表都是按系統(tǒng)的具體模塊來區(qū)分的,如根據(jù)前端系統(tǒng)要求的不同,數(shù)據(jù)庫的表大致可以分為系統(tǒng)基本配置表、銷售模塊表、采購模塊表、報(bào)表模塊表等等。我們可以根據(jù)這些模塊的不同,分別給與不同的前綴來區(qū)分。這么做的好處是很明顯的。如一看到表最大名字,就可以知道這個(gè)表是屬于哪個(gè)應(yīng)用的、哪個(gè)模塊的,這無疑可以提高數(shù)據(jù)庫設(shè)計(jì)與前臺(tái)軟件開發(fā)的效率。同時(shí),數(shù)據(jù)庫中默認(rèn)的排序規(guī)則是按名字來排序的,所以,為表格設(shè)置類別前綴的話,可以把同一類的表格排在一起,方便我們察看。

  二是對(duì)表格命名的時(shí)候,要考慮可讀性,而不能隨便阿狗阿貓的亂取名字。最常見的是,那些剛學(xué)數(shù)據(jù)庫的人,在表命名的時(shí)候,如要建幾張測試表,就會(huì)隨便命名如TEST1,TEST2之類的。雖然這只是測試,但是,也不符合我們的命名過則。要做測試的話,那就以TEST開頭,然后后面加上具體要測試的內(nèi)容。如此的話,我們才可以通過表的名字知道該表具體的用途。而不用打開表去看里面具體的結(jié)構(gòu)或者注釋才能知道我們需要的信息。所以,在設(shè)計(jì)表的名字的時(shí)候,還要關(guān)注一下其的可讀性。

【ORACLE數(shù)據(jù)表管理建議】相關(guān)文章:

Oracle重做日志文件管理技巧08-31

Oracle認(rèn)證:ORACLE綁定變量BINDPEEKING08-25

Oracle認(rèn)證:Oracle控制件文件修復(fù)07-27

Oracle數(shù)據(jù)庫臨時(shí)表管理技巧06-15

Oracle認(rèn)證:空間管理三個(gè)技巧05-13

Oracle認(rèn)證:Oracle避免全表掃描方式10-04

Oracle認(rèn)證:Oracle內(nèi)存結(jié)構(gòu)研究-PGA篇09-22

Oracle發(fā)展歷程09-12

Oracle最新認(rèn)證07-13

Oracle認(rèn)證作用07-31