DB2表空間是一種存儲結構,包含表,索引,大對象和長數據。 它可用於將資料庫中的數據組織到邏輯存儲組中,該邏輯存儲組與存儲在系統上的數據相關。
表空間存儲在資料庫分區組中。
資料庫中表空間的優點
表空間提供了以下幾個優勢:
- 可恢復性:表空間使備份和恢復操作更加方便。 使用單個命令,可以備份或還原表空間中的所有資料庫對象。
- 自動存儲管理:資料庫管理器根據需要創建和擴展容器。
- 記憶體利用率:單個緩衝池可以管理多個表空間。可以將臨時表空間分配給它們自己的緩衝池,以提高排序或連接等活動的性能。
容器
表空間由一個或多個容器(container )組成。容器可以是目錄名稱,設備名稱或檔案名。
在資料庫中,單個表空間可以在同一物理存儲設備上具有多個容器。 如果使用自動存儲表空間選項創建表空間,則資料庫管理器將自動處理容器的創建和管理。 如果未使用自動存儲表空間選項創建,則需要自己定義和管理容器。
默認表空間
創建新資料庫時,資料庫管理器會為數據庫創建一些默認表空間。 這些表空間用作用戶和臨時數據的存儲。 每個資料庫必須包含至少三個表空間,如下所示:
- 目錄表空間
- 用戶表空間
- 臨時表空間
目錄表空間: 它包含資料庫的系統目錄表。 它被命名為SYSCATSPACE
,無法刪除。
用戶表空間: 此表空間包含用戶定義的表。 在資料庫中,有一個默認的用戶表空間,名稱為USERSPACE1
。 如果在創建表時沒有為表指定用戶定義的表空間,則資料庫管理器會選擇默認的用戶表空間。
臨時表空間: 臨時表空間包含臨時表數據。 此表空間包含系統臨時表空間或用戶臨時表空間。
系統臨時表空間保存資料庫管理器在執行排序或連接等操作時所需的臨時數據。 資料庫必須至少具有一個系統臨時表空間,並將其命名稱為TEMPSPACE1
。 它是在創建資料庫時創建的。 用戶臨時表空間保存表中的臨時數據。 它是使用DECLARE GLOBAL TEMPORARY TABLE
或CREATE GLOBAL TEMPORARY TABLE
語句創建的。 在創建資料庫時,默認情況下不會創建此臨時表空間。
表空間和存儲管理:
可以使用不同的方式設置表空間,具體取決於用戶希望如何使用它們。 可以設置操作系統來管理表空間分配,可以讓資料庫管理器分配空間,也可以為數據選擇自動分配表空間。
可以使用以下三種類型的託管空間:
系統管理空間(SMS):操作系統的檔系統管理器分配和管理存儲表的空間。 存儲空間按需分配。 該模型由表示資料庫對象的檔組成。 對於用戶定義的表空間,在DB2 V10.1
中不推薦使用此表空間類型,並且不會為目錄和臨時表空間不推薦使用此表空間類型。
資料庫管理空間(DMS) :資料庫伺服器控制存儲空間。 根據在創建DMS表空間時指定的容器定義,在檔系統上預先分配存儲空間。 對於用戶定義的表空間,不推薦使用版本10.1修訂包1,但系統表空間和臨時表空間不推薦使用它。
自動存儲表空間: 可以自動管理資料庫伺服器。 資料庫伺服器根據資料庫上的數據創建和擴展容器。 使用自動存儲管理,不需要提供容器定義。 資料庫伺服器負責創建和擴展容器以利用分配給資料庫的存儲。 如果向存儲組添加存儲空間,則在現有容器達到其最大容量時會自動創建新容器。 如果要立即使用新添加的存儲,可以重新平衡表空間。
頁面,表和表空間大小:
臨時DMS和自動存儲表空間,用戶用資料庫選擇的頁面大小決定了表空間大小的最大限制。 對於表SMS和臨時自動存儲表空間,頁面大小限制了表本身的大小。 頁面大小可以是:4kb
,8kb
,16kb
或32kb
。