一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

ORACLE數據表管理建議

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

ORACLE數據表管理建議

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

  一、 表該存放在哪里?

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

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

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

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

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

  具體的來(lái)說(shuō),設計大表的時(shí)候,可以考慮遵循如下的建議。

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

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

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

  三、 如何給表命名?

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

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

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

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

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

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

Oracle認證:ORACLE綁定變量BINDPEEKING08-25

Oracle認證:Oracle控制件文件修復07-27

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

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

Oracle認證:Oracle避免全表掃描方式10-04

Oracle認證:Oracle內存結構研究-PGA篇09-22

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

Oracle最新認證07-13

Oracle認證作用07-31

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看