程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2 的表空間

DB2 的表空間

編輯:DB2教程

DB2 的表空間按管理方式分為兩種:系統管理空間(System Management 

Space,SMS)和數據庫管理空間(Database Management Space,DMS)。
  
  按類型分為:規則表空間、長整數表空間、系統臨時表空間、用戶臨時表空間

。其中長整數表空間只能是DMS的。

  規則表空間中包含用戶數據的表。默認用戶表空間名為USERSPACE1,索引也存

儲在規則表空間中,另外系統目錄表也放在規則表空間中。

  默認的系統目錄表空間名為SYSCATSPACE。

  臨時表空間分為系統臨時表空間和用戶臨時表空間。系統臨時表空間用來存儲

各種數據操作(排序、重組表、創建索引、連接表)中所需的內部臨時數據,雖

然可以創建任意多個系統臨時表空間,但建議用戶只使用大多數表所使用的頁大

小創建一個,默認系統臨時表空間名為TEMPSPACE1。用戶臨時表空間用來存儲已

說明全局臨時表(已說明全局臨時表存儲的是應用程序臨時數據)。用戶臨時表

空間不是在數據庫創建時默認創建的。

  SMS每個容器是操作系統的文件空間中的一個目錄;DMS每個容器是一個固定的

、預分配的文件,或是物理設備。

  SMS的管理比較簡單,由操作系統自動管理,空間的大小隨數據量的變化系統

自動調整。

  DMS是由數據庫管理的,空間大小在創建時確定,空間不夠時要手工添加或刪

除部分數據以釋放空間。

  大多數情況下,DMS的性能比SMS好。

  用命令行方式創建SMS表空間的簡單語法:
CREATE TABLESPACE <NAME> MANAGED BY SYSTEM USING ('<path>')

  用命令行方式創建DMS表空間的簡單語法:
CREATE TABLESPACE <NAME> MANAGED BY DATABASE USING (FILE '<path>' 

<size>

例一:在OS/2或Windows NT上創建一個SMS表空間:
CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM
 USING ('d:\acc_tbsp','e:\acc_tbsp','f:\acc_tbsp')

例二:在OS/2上創建一個DMS表空間,使用各自有5000頁的兩個文件容器:
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE
 USING (FILE 'd:\db2data\acc_tbsp' 5000,
     FILE 'e:\db2data\acc_tbsp' 5000)

例三:在UNIX上創建一個DMS表空間,使用各有10000頁的3個邏輯卷:
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE
 USING (DEVICE '/dev/rdblv6' 10000,
     DEVICE '/dev/rdblv7' 10000,
     DEVICE '/dev/rdblv8' 10000)
 OVERHEAD 24.1
 TRANSFERRATE 0.9
上面語句中提到的UNIX設備必須已經存在,且實例擁有者和SYSADM組必須能夠寫

入它們。

例四:在UNIX分區數據庫中稱為ODDNODEGROUP的節點組上創建一個DMS表空間:
CREATE TABLESPACE PLANS MANAGED BY DATABASE
 USING (DEVICE '/dev/HDISK0' 10000, DEVICE '/dev/n1hd01' 40000) ON 

NODE 1
    (DEVICE '/dev/HDISK0' 10000, DEVICE '/dev/n3hd03' 40000) ON 

NODE 3
    (DEVICE '/dev/HDISK0' 10000, DEVICE '/dev/n5hd05' 40000) ON 

NODE 5
在此例中,ODDNODEGROUP節點組由編號為1、3、5的數據庫分區組成,在所有數據

庫分區上,都使用具有10000個4KB頁的 /dev/hdisk0 設備,另外,還為每個數據

庫分區說明了一個包含40000個4KB大小的頁的設備。

例五:在UNIX系統上,創建一個具有8KB頁大小的SMS表空間:
CREATE TABLESPACE SMS8K PAGESIZE 8192
 MANAGED BY SYSTEM
 USING ('FSMS_8K_1')
 BUFFERPOOL BUFFPOOL8K
相關的緩沖池也必須具有相同的8KB頁大小。另外,創建的表空間只有在所引用的

緩沖池被激活後才能使用。

例六:創建系統臨時表空間:
 系統臨時表只能存儲在系統臨時表空間中,所以數據庫必須始終至少有一個系

統臨時表空間。
CREATE SYSTEM TEMPORARY TABLESPACE tmp_tbsp
 MANAGED BY SYSTEM
 USING ('d:\tmp_tbsp','e:\tmp_tbsp')
創建系統臨時表空間時,只能指定IBMTEMPGROUP節點組。

例七:創建用戶臨時表空間:
 用戶臨時表空間用來存儲已說明的臨時表。
CREATE USER TEMPORARY TABLESPACE usr_tbsp
 MANAGED BY DATABASE
 USING (FILE 'd:\db2data\user_tbsp' 5000,
     FILE 'e:\db2data\user_tbsp' 5000)
與常規表空間一樣,用戶臨時表空間可以在除IBMTEMPGROUP之外的任何節點組中

創建。創建用戶臨時表空間使用的默認節點組是IBMDEFAULTGROUP。DECLARE 

GLOBAL TEMPORARY TABLE 語句定義提供在用戶臨時表空間中使用的已說明臨時表



例八:將兩個新設備容器添加到UNIX上的一個表空間中:
ALTER TABLESPACE RESOURCE
 ADD (DEVICE '/dev/rhd9' 10000,
    DEVICE '/dev/rhd10' 10000)

例九:把UNIX上的表空間中的兩個設備容器改變大小(由1000頁改為2000頁)
ALTER TABLESPACE HISTORY
 RESIZE (DEVICE '/dev/rhd7' 2000,
     DEVICE '/dev/rhd8' 2000)

例十:在UNIX表空間中,擴充兩個設備容器(原本各含1000頁)
ALTER TABLESPACE HISTORY
 EXTEND (DEVICE '/dev/rhd11' 1000,
     DEVICE '/dev/rhd12' 1000)
操作後兩個設備的大小都從1000頁擴充至2000頁。不能縮小容器的大小。

可以給現存表空間重命名,而無須關心該表空間中的個別對象。重命名表空間時

,將更改所有引用該表空間的目錄記錄。不能重命名SYSCATSPACE表空間;不能重

命名處於前滾暫掛或正在前滾狀態的表空間。

刪除表空間時,也會刪除該表空間中的所有數據,釋放容器,去除目錄項,並導

致該表空間中定義的所有對象都被刪除或標記為無效。可以通過刪除表空間來重

新使用該表空間中的容器,但是在試圖重新使用這些容器之前,必須COMMIT該

DROP TABLESPACE命令。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved