文章詳情頁
拋磚引玉,實(shí)例講解DB2中的表空間(1)
瀏覽:6日期:2023-11-11 08:23:10
表空間是數(shù)據(jù)庫及存儲在該數(shù)據(jù)庫中的表之間的邏輯層。表空間在數(shù)據(jù)庫中創(chuàng)建,表在表空間中創(chuàng)建。使用表空間的一個明顯的好處是能夠把數(shù)據(jù)合理的分布存儲在不同的磁盤上或者存儲在磁盤的不同位置上,有助于提高數(shù)據(jù)存取的效率。DB2 的表空間按治理方式分為兩種:系統(tǒng)治理空間(System Management Space,SMS)和數(shù)據(jù)庫治理空間(Database Management Space,DMS)。按類型分為:規(guī)則表空間、大對象表空間、系統(tǒng)臨時表空間、用戶臨時表空間。規(guī)則表空間中包含用戶數(shù)據(jù)的表。默認(rèn)用戶表空間名為USERSPACE1,索引也存儲在規(guī)則表空間中,另外系統(tǒng)目錄表也放在規(guī)則表空間中。默認(rèn)的系統(tǒng)目錄表空間名為SYSCATSPACE。臨時表空間分為系統(tǒng)臨時表空間和用戶臨時表空間。系統(tǒng)臨時表空間用來存儲各種數(shù)據(jù)操作(排序、重組表、創(chuàng)建索引、連接表)中所需的內(nèi)部臨時數(shù)據(jù),雖然可以創(chuàng)建任意多個系統(tǒng)臨時表空間,但建議用戶只使用大多數(shù)表所使用的頁大小創(chuàng)建一個,默認(rèn)系統(tǒng)臨時表空間名為TEMPSPACE1。用戶臨時表空間用來存儲已說明全局臨時表(已說明全局臨時表存儲的是應(yīng)用程序臨時數(shù)據(jù))。用戶臨時表空間不是在數(shù)據(jù)庫創(chuàng)建時默認(rèn)創(chuàng)建的。SMS每個容器是操作系統(tǒng)的文件空間中的一個目錄;DMS每個容器是一個固定的、預(yù)分配的文件,或是物理設(shè)備。SMS的治理比較簡單,由操作系統(tǒng)自動治理,空間的大小隨數(shù)據(jù)量的變化系統(tǒng)自動調(diào)整。DMS是由數(shù)據(jù)庫治理的,空間大小在創(chuàng)建時確定,空間不夠時要手工添加或刪除部分?jǐn)?shù)據(jù)以釋放空間。大多數(shù)情況下,DMS的性能比SMS好。用命令行方式創(chuàng)建SMS表空間的簡單語法:CREATE TABLESPACE ; MANAGED BY SYSTEM USING (';') 123下一頁 例一:在Windows上創(chuàng)建一個SMS表空間:CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM USING ('d:acc_tbsp','e:acc_tbsp','f:acc_tbsp')完成的結(jié)果為在D、E、F三個磁盤上創(chuàng)建了三個名稱為acc_tbsp的文件夾,每個文件夾下面都有一個名為SQLTAG.NAM的文件。例二:刪除例一所創(chuàng)建的SMS表空間:DROP TABLESPACE RESOURCE運(yùn)行完這條命令,相應(yīng)的表空間會從DB2注冊表中刪除,但是磁盤上的三個文件夾仍然存在,需要手工刪除。用命令行方式創(chuàng)建DMS表空間的簡單語法:CREATE TABLESPACE ; MANAGED BY DATABASE USING (FILE ';'或者CREATE TABLESPACE ; MANAGED BY DATABASE USING (DEVICE ';'例三:在Windows上創(chuàng)建一個DMS表空間,使用各自有5000頁的兩個文件容器:CREATE TABLESPACE RESOURCE MANAGED BY DATABASE USING (FILE 'd:db2dataacc_tbsp' 5000, FILE 'e:db2dataacc_tbsp' 5000)運(yùn)行結(jié)果為:在D、E磁盤的db2data文件夾下面各創(chuàng)建了一個名為acc_tbsp的文件,大小都為20000K(默認(rèn)情況下每頁大小為4K)。例四:在例三所創(chuàng)建的表空間中添加一個容器:ALTER TABLESPACE RESOURCE ADD(FILE 'f:db2dataacc_tbsp' 5000)運(yùn)行的結(jié)果為在RESOURCE表空間中包含了三個容器(文件):d:db2dataacc_tbsp、 e:db2dataacc_tbsp、 f:db2dataacc_tbsp。例五:用RESIZE子句更改例三所創(chuàng)建的表空間的容器的大小:ALTER TABLESPACE RESOURCE RESIZE (file 'd:db2dataacc_tbsp' 8000, file 'e:db2dataacc_tbsp' 8000, file 'f:db2dataacc_tbsp' 8000) 上一頁123下一頁 每個容器(文件)的大小變?yōu)?000頁。把容器的容量變大不會出錯,但是假如容器中的數(shù)據(jù)已經(jīng)布滿,再把容器的容量縮小,則會引起錯誤。例六:用EXTEND子句更改例三所創(chuàng)建的表空間的容器的大小:ALTER TABLESPACE RESOURCE EXTEND (file 'd:db2dataacc_tbsp' 1000, file 'e:db2dataacc_tbsp' 1000, file 'f:db2dataacc_tbsp' 1000)該命令的運(yùn)行結(jié)果為在原有容量的基礎(chǔ)之上,每個容器再增加1000頁。例七:刪除例三中創(chuàng)建的DMS表空間:DROP TABLESPACE RESOURCE運(yùn)行的結(jié)果為在DB2的注冊表中把RESOURCE表空間刪除,同時在磁盤上把相對應(yīng)的文件夾和文件都一起自動刪除。例八:在UNIX上創(chuàng)建一個DMS表空間,使用各有10000頁的3個邏輯卷:CREATE TABLESPACE RESOURCE MANAGED BY DATABASE USING (DEVICE '/dev/rdblv6' 10000, DEVICE '/dev/rdblv7' 10000, DEVICE '/dev/rdblv8' 10000)上面語句中提到的UNIX設(shè)備必須已經(jīng)存在,且實(shí)例擁有者和SYSADM組必須能夠?qū)懭胨鼈儭MS與DMS的對比特性SMS DMS能夠在表空間中動態(tài)增加容器的數(shù)目嗎 N Y能夠把索引數(shù)據(jù)存放到不同表空間的表中嗎 N Y能夠把大對象數(shù)據(jù)存放到不同表空間的表中嗎 N Y表可以分散存放到多個表空間中嗎 N Y僅在需要時才分配空間嗎 Y N表空間可以被放在不同的磁盤中嗎 Y N創(chuàng)建之后,區(qū)段大小能夠改變嗎 N N例九:創(chuàng)建系統(tǒng)臨時表空間:CREATE SYSTEM TEMPORARY TABLESPACE tmp_tbsp MANAGED BY SYSTEM USING(‘d:mp_tbsp’,’e:mp_tbsp’)系統(tǒng)臨時表只能存儲在系統(tǒng)臨時表空間中,所以數(shù)據(jù)庫必須始終至少有一個系統(tǒng)臨時表空間。例十:創(chuàng)建用戶臨時表空間:CREATE USER TEMPORARY TABLESPACE usr_tbsp MANAGED BY DATABASE USING(FILE ‘d:db2datauser_tbsp’ 5000, FILE ‘e:db2datauser_tbsp’ 5000)用戶臨時表空間用于存儲已說明的臨時表(用 DECLARE GLOBAL TEMPORARY TABLE 語句定義)例十一:用RENAME語句給表空間重命名:RENAME TABLESPACE RESOURCE TO RES1用該語句給表空間重命名之后,將自動更改所有引用該表空間的目錄記錄,所以無須關(guān)心該表空間中的個別對象。例十二:在RESOURCE表空間中創(chuàng)建一張名為T1的表:CREATE TABLE T1(ABC INT) IN RESOURCE 上一頁123
標(biāo)簽:
DB2
數(shù)據(jù)庫
排行榜
