DB2學習筆記 - 表空間

action929發表於2007-02-04

表空間的學習筆記。

[@more@]

CREATE TABLESPACE
create tablespace語句給資料庫定義了一個新的表空間,分配container給tablespace。
表空間的定義和屬性儲存在catalog。

有2種不同的方式管理表空間
1. 系統管理的表空間(SMS)
可以使用到系統的IO快取。
不能從SMS表空間刪除container。
在SMS表空間內,每個container就是一個目錄。
如果一個表空間由多個容器建立,那麼db2將均衡寫入到各個容器的資料量。
所有表資料和索引都共享同一個表空間。
檔案大小有可能動態增長,其大小上限由容器數量、作業系統在檔案大小方面的限制,以及
作業系統在單個檔案大小的方賣的限制所決定。
當單個容器中的空間滿了之後,系統就認為該表空間已滿,即使其他容器中還有空間。
可以將新容器新增到還沒有任何容器的分割槽上的SMS中。


2. 資料庫管理的表空間(DMS)
container是檔案或者設別。
可以動態新增或者刪除container
可以自動均衡資料
可以動態擴充套件、減少容器的數量或者調整其大小。
表空間容量只受物理儲存器限制


表空間型別分為
1. regular
常規表空間儲存表資料和索引。它還可以儲存諸如大物件之類的長資料,除非這些資料顯式地儲存在長表空間中。
每個資料庫中必須至少有一個常規表空間。建立資料庫時指定該表空間的預設名為 USERSPACE1。
2. large
V8和V9的large型別有很大的不同
v8: 用來專門存放大物件的表空間
v9: 和regular唯一的不同是 regular 表空間的最大空間是64G(pagesize為4K),large表空間的最大容量是2T(pagesize為4K)
3. system temporary
系統臨時表空間用於儲存 SQL 操作(比如排序、重組表、建立索引和連線表)期間所需的內部臨時資料。
每個資料庫必須至少有一個系統臨時表空間。隨資料庫建立的系統臨時表空間的預設名為 TEMPSPACE1。
4. user temporary
使用者臨時表空間儲存已宣告的全域性臨時表。建立資料庫時不存在使用者臨時表空間。
至少應當建立一個使用者臨時表空間以允許定義已宣告的臨時表。使用者臨時表空間是可選的,預設情況下一個都不建立


頁大小(Page size)
定義表空間所使用的頁大小。所支援的大小為 4K、8K、16K 和 32K。頁大小根據下表限定了可放到表空間中的表的行長度和列數:
表 1.
頁大小 行大小限制 列數限制 最大容量
4 KB 4 005 500 64 GB
8 KB 8 101 1 012 128 GB
16 KB 16 293 1 012 256 GB
32 KB 32 677 1 012 512 GB
表空間最多可包含 16384 個頁,因此選擇較大的頁大小可以增加表空間的容量。

擴充套件塊大小(Extent size)
指定在跳到下一個容器之前將寫到當前容器中的頁數。
儲存資料時資料庫管理器反覆迴圈使用所有容器。
該引數只有在表空間中有多個容器時才起作用。
預取大小(Prefetch size)
指定當執行資料預取時將從表空間讀取的頁數。
預取操作在查詢引用所需的資料之前讀入這些資料,這樣一來查詢就不必等待執行 I/O 了。
當資料庫管理器確定順序 I/O 是適當的,並且確定預取操作可能有助於提高效能時,它就選擇預取操作。
比較好的做法是將 PREFETCHSIZE 值顯式地設定成表空間的 EXTENTSIZE 值與表空間容器數的乘積的倍數。
開銷(Overhead)和傳送速率(Transfer rate)
這些值用於確定查詢最佳化期間的 I/O 成本。
這兩個值的測量單位都是毫秒,而且它們應當分別是所有容器開銷和傳送速率的平均值。
開銷是與 I/O 控制器活動、磁碟尋道時間和旋轉延遲時間相關聯的時間。
傳送速率是將一個頁讀入記憶體所必需的時間量。它們的預設值分別是 24.1 和 0.9。可以根據硬體規格計算這些值。

通常應該將目錄表空間和系統臨時表空間作為 SMS 分配。
沒有必要擁有多個具有相同頁大小的臨時表空間,通常只需一個具有最大頁大小的臨時表空間就夠了。
一個頁上的行不能超過 255 個,因此具有較短行的表不能利用整個頁。
如果表很大,如果通常是順序訪問大量行(該表可能進行了群集),那麼比較大的頁大小會比較有效。
如果隨機訪問行,那麼較小的頁大小可以允許 DB2 更好地利用緩衝區,因為同樣的儲存區域可以容納更多頁。
RAID 裝置有它們自己的特殊考慮。
EXTENTSIZE 應該等於 RAID 條帶大小或者是它的倍數。
PREFETCHSIZE 應該等於 RAID 條帶大小乘以 RAID 並行裝置數(或者等於該乘積的倍數),這個值應該是 EXTENTSIZE 的倍數。

相關係統表:
SYSCAT.TABLESPACES

相關命令:
list tablespaces
list tablespace containers for [tablespace id]

相關引數:
DB2_PARALLEL_IO 可以在一個容器中啟用 I/O 並行性:
DB2_STRIPED_CONTAINERS=ON 可以將容器標記大小從一個頁更改成整個擴充套件塊,因此就能使表空間擴充套件塊和 RAID 條帶一致。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133835/viewspace-897320/,如需轉載,請註明出處,否則將追究法律責任。

相關文章