Oracle表空間設計理念

轉載地址:http://tech.sina.com.cn/s/2008-09-05/0907794823.shtml

 

SQL Server數據庫與Oracle數據庫之間最大的區別要屬表空間設計。Oracle數據庫開創性地提出了表空間的設計理念,這爲Oracle數據庫的高性能做出了不可磨滅的貢獻。可以這麼說,Oracle中很多優化都是基於表空間的設計理念而實現的。

  典型應用一:控制用戶所佔用的表空間配額。

   在一些大型的數據庫應用中,我們需要控制某個用戶或者某一組用戶其所佔用的磁盤空間。這就好像在文件服務器中,需要爲每個用戶設置磁盤配額一樣,以防止 硬盤空間耗竭。所以,在數據庫中,我們也需要限制用戶所可以使用的磁盤空間大小。爲了達到這個目的,我們就可以通過表空間來實現。

  我們可以在Oracle數據庫中,建立不同的表空間,爲其設置最大的存儲容量,然後把用戶歸屬於這個表空間。如此的話,這個用戶的存儲容量,就受到這個表空間大小的限制。

  典型應用二:控制數據庫所佔用的磁盤空間。

   有時候,在Oracle數據庫服務器中,可能運行的不止一個服務。除了數據庫服務器外,可能還有郵件服務器等應用系統服務器。爲此,就需要先對 Oracle數據庫的磁盤空間作個規劃,否則,當多個應用程序服務所佔用的磁盤空間都無限增加時,最後可能導致各個服務都因爲硬盤空間的耗竭而停止。所 以,在同一臺服務器上使用多個應用程序服務,我們往往需要先給他們進行磁盤空間的規劃和分配。各個服務都不能夠超過我們分配給他的最大限額,或者超過後及 時的提醒我們。只有這樣,才能夠避免因爲磁盤空間的耗竭而導致各種應用服務的崩潰。

  典型應用三:靈活放置表空間,提高數據庫的輸入輸出性能。

   數據庫管理員還可以將不同類型的數據放置到不同的表空間中,這樣可以明顯提高數據庫輸入輸出性能,有利於數據的備份與恢復等管理工作。因爲我們數據庫管 理員在備份或者恢復數據的時候,可以按表空間來備份數據。如在設計一個大型的分銷系統後臺數據庫的時候,我們可以按省份建立表空間。與浙江省相關的數據文 件放置在浙江省的表空間中,北京發生業務記錄,則記錄在北京這個表空間中。如此,當浙江省的業務數據出現錯誤的時候,則直接還原浙江省的表空間即可。很明 顯,這樣設計,當某個表空間中的數據出現錯誤需要恢復的時候,可以避免對其他表空間的影響。

  另外,還可以對錶空間進行獨立備份。當數據 庫容量比較大的時候,若一下子對整個數據庫進行備份,顯然會佔用比較多的時間。雖然說Oracle數據庫支持熱備份,但是在備份期間,會佔用比較多的系統 資源,從而造成數據庫性能的下降。爲此,當數據庫容量比較大的時候,我們就需要進行設置多個表空間,然後規劃各個表空間的備份時間,從而可以提高整個數據 庫的備份效率,降低備份對於數據庫正常運行的影響。

  典型應用四:大表的排序操作。

  我們都知道,當表中的記錄比較多的時候,對他們進行查詢,速度會比較慢。第一次查詢成功後,若再對其進行第二次重新排序,仍然需要這麼多的時間。爲此,我們在數據庫設計的時候,針對這種容量比較大的表對象,往往把它放在一個獨立的表空間,以提高數據庫的性能。

  典型應用五:日誌文件與數據文件分開放,提高數據庫安全性。

   默認情況下,日誌文件與數據文件存放在同一表空間。但是,這對於數據庫安全方面來說,不是很好。所以,我們在數據庫設計的過程中,往往喜歡把日誌文件, 特別是重做日誌文件,放在一個獨立的表空間中,然後把它存放在另外一塊硬盤上。如此的話,當存放數據文件的硬盤出現故障時,能夠馬上通過存放在另一個表空 間的重做日誌文件,對數據庫進行修復,以減少企業因爲數據丟失所帶來的損失。

  當然,表空間的優勢還不僅僅這些,企業對於數據庫的性能要求越高,或者數據庫容量越大,則表空間的優勢就會越大。

  下面,我們就具體來看看Oracle數據庫中表空間的處理方式,看其在性能與安全性方面是否有足夠的優勢與SQL Server數據庫抗衡。

  在數據庫設計的時候,我們建議數據庫管理員按如下順序設置表空間。

第一步:建立表空間。

  在設計數據庫的時候,首先需要設計表空間。我們需要考慮,是隻建立一個表空間呢,還是需要建立多個表空間,以及各個表空間的存放位置、磁盤限額等等。

   到底設計多少個表空間合理,沒有統一的說法,這主要根據企業的實際需求去判斷。如企業需要對用戶進行磁盤限額控制的,則就需要根據用戶的數量來設置表空 間。當企業的數據容量比較大,而其又對數據庫的性能有比較高的要求時,就需要根據不同類型的數據,設置不同的表空間,以提高其輸入輸出性能。

  第二步:建立用戶,並制定用戶的默認表空間。

   在建立用戶的時候,我們建議數據庫管理員要指定用戶的默認表空間。因爲我們在利用CREATE語句創建數據庫對象,如數據庫表的時候,其默認是存儲在數 據庫的當前默認空間。若不指定用戶默認表空間的話,則用戶每次創建數據庫對象的時候,都要指定表空間,顯然,這並不是很合理。

  另外要注意,不同的表空間有不同的權限控制。用戶對於表空間A具有完全控制權限,可能對於表空間B就只有查詢權限,甚至連連接的權限的都沒有。所以,合理爲用戶配置表空間的訪問權限,也是提高數據庫安全性的一個方法。

發佈了17 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章