為DB2數(shù)據(jù)庫(kù)創(chuàng)建表空間過(guò)程
DB2數(shù)據(jù)庫(kù)中的表空間(tablespace) 是一個(gè)邏輯層,一些數(shù)據(jù)庫(kù)對(duì)象(比如表、視圖和索引)駐留在這里。一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)表空間。在首次創(chuàng)建數(shù)據(jù)庫(kù)時(shí),DB2 會(huì)自動(dòng)地創(chuàng)建一組表空間。
在 Control Center 中,展開(kāi) HELLOWLD 并點(diǎn)擊 Table Spaces。應(yīng)該會(huì)在 Control Center 右邊的窗口中看到三個(gè)表空間,如圖 7 所示:
圖 7. Control Center Table Spaces 視圖
這些表空間是 DB2 在創(chuàng)建數(shù)據(jù)庫(kù) HWLD 時(shí)創(chuàng)建的。SYSCATSPACE 和 TEMPSPACE1 都是系統(tǒng)表空間,不能刪除或重新創(chuàng)建它們。SYSCATSPACE 是系統(tǒng)編目表空間,用來(lái)存儲(chǔ)關(guān)于數(shù)據(jù)庫(kù)的元信息。TEMPSPACE1 在某些數(shù)據(jù)庫(kù)操作期間用來(lái)存儲(chǔ)臨時(shí)結(jié)果。USERSPACE1 是默認(rèn)的用戶表空間,用來(lái)存儲(chǔ)表、視圖和索引等用戶數(shù)據(jù)。任何具有足夠權(quán)力的 DB2 用戶都可以刪除和重新創(chuàng)建 USERSPACE1 或者創(chuàng)建其他用戶表空間。
SMS 或 DMS 表空間
在創(chuàng)建表空間時(shí),可以選擇表空間是 SMS 表空間還是 DMS 表空間。SMS 代表 System Managed Space,DMS 代表 Database Managed Space。在 SMS 表空間中,空間由操作系統(tǒng)的文件系統(tǒng)管理,會(huì)根據(jù)需要分配空間。SMS 表空間需要的初始設(shè)置比較少,管理方面需要考慮的因素少,而且一般更容易創(chuàng)建和使用,因?yàn)榭臻g會(huì)在需要時(shí)自動(dòng)地分配。在 DMS 表空間中,空間由 DB2 管理。DMS 表空間需要在創(chuàng)建時(shí)預(yù)先分配空間,所以需要進(jìn)行比較多的初始設(shè)置工作,管理方面也有更多需要考慮的因素。但是,它為用戶提供了更大的靈活性,可以更好地控制數(shù)據(jù)的布局并改進(jìn)數(shù)據(jù)訪問(wèn)的性能。在一般情況下,經(jīng)過(guò)良好設(shè)計(jì)和調(diào)優(yōu)的 DMS 表空間可以提供比相似的 SMS 表空間更好的性能。
在 Table Spaces 視圖中,點(diǎn)擊每個(gè)表空間。查看在右下方的窗口中顯示的詳細(xì)信息。SYSCATSPACE 和 USERSPACE1 都是 DMS 表空間,TEMPSPACE1 是 SMS 表空間。您還可以創(chuàng)建自己的表空間。
緩沖池
緩沖池(bufferpool) 是一個(gè)內(nèi)存塊的集合,這些內(nèi)存塊采用頁(yè)面的形式。在首次創(chuàng)建數(shù)據(jù)庫(kù)時(shí),同時(shí)創(chuàng)建了一個(gè)默認(rèn)的緩沖池 IBMDEFAULTBP。可以在創(chuàng)建表空間時(shí),或者在 Buffer Pools 視圖中使用 Create New Bufferpool 向?qū)В瑒?chuàng)建新的緩沖池。
緩沖池最重要的作用是,在數(shù)據(jù)庫(kù)讀寫(xiě)硬盤上的數(shù)據(jù)時(shí)幫助減少 I/O 開(kāi)銷。這是通過(guò) I/O 預(yù)獲取和頁(yè)面清理器實(shí)現(xiàn)的。預(yù)獲取能夠減少讀取頁(yè)面的 I/O 開(kāi)銷,其原理是:預(yù)先判斷特定查詢可能需要的頁(yè)面,然后將這些頁(yè)面讀入緩沖池,因此當(dāng)查詢需要它們時(shí),它們已經(jīng)準(zhǔn)備好了。頁(yè)面清理器確保將事務(wù)不再需要的已經(jīng)更新的頁(yè)面首先寫(xiě)到硬盤上,然后從緩沖池中清除它們。這確保緩沖池中有足夠的干凈空間可以讀取頁(yè)面。
DB2 支持不同的頁(yè)面大小:2K、4K、8K、16K 和 32K。IBMDEFAULTBP 使用 4K 的頁(yè)面大小。如果希望創(chuàng)建采用其他頁(yè)面大小的表空間,那么首先要確保數(shù)據(jù)庫(kù)中有采用這種頁(yè)面大小的緩沖池。多個(gè)表空間可以使用同一個(gè)緩沖池。在創(chuàng)建或更改表空間時(shí),可以指定要使用哪個(gè)緩沖池。選擇和創(chuàng)建適當(dāng)?shù)木彌_池對(duì)于數(shù)據(jù)庫(kù)性能很重要。可以根據(jù)需要?jiǎng)?chuàng)建新的緩沖池或更改現(xiàn)有的緩沖池。
在 Control Center 中,點(diǎn)擊 Buffer Pools。可以看到數(shù)據(jù)庫(kù)中的所有緩沖池。選擇創(chuàng)建新的緩沖池或更改現(xiàn)有的緩沖池。
圖 8. Control Center Bufferpool 視圖
DB2 系統(tǒng)目錄表和視圖
在創(chuàng)建新數(shù)據(jù)庫(kù)時(shí),DB2 會(huì)在編目表空間中創(chuàng)建多個(gè)系統(tǒng)編目表和視圖。這些系統(tǒng)編目表和視圖用來(lái)跟蹤數(shù)據(jù)庫(kù)管理程序需要知道的關(guān)于數(shù)據(jù)庫(kù)對(duì)象、訪問(wèn)控制信息和工具的重要信息。系統(tǒng)編目視圖基于基本系統(tǒng)編目表。用戶在一般情況下通過(guò)查詢系統(tǒng)編目視圖來(lái)查看感興趣的系統(tǒng)編目表數(shù)據(jù)。
在 Control Center 中,在 All Database 視圖下面,展開(kāi) HELLOWLD,然后選擇 Table Spaces。選擇右上窗口中顯示的 SYSCATSPACE。可以在右下窗口中看到這個(gè)表空間的概況:
圖 9. Control Center —— Tablespaces 視圖
點(diǎn)擊 Show Related Objects。會(huì)出現(xiàn)一個(gè)新頁(yè)面,其中顯示表空間 SYSCATSPACE 中的所有表和索引,以及它們的模式 SYSIBM。點(diǎn)擊 Indexes,列出 SYSCATSPACE 中的所有索引。Show SQL 顯示用來(lái)獲得這個(gè)表空間中的表或索引列表的 select 命令。
表、索引、模式和視圖都是重要的 DB2 對(duì)象,本教程后面都會(huì)詳細(xì)討論。但是,首先試試手工創(chuàng)建表空間:
在 Control Center 中點(diǎn)擊 Create New Tablespace,啟動(dòng) Create Table Space 向?qū)А]斎?TBSP_DATA1 作為表空間名,在 comment 中輸入 DMS tablespace to hold data。 選擇 Regular 來(lái)選擇要使用的表空間類型并點(diǎn)擊 Next。出現(xiàn) Specify a buffer pool 面板,在這里選擇這個(gè)表空間要使用的緩沖池。 使用默認(rèn)的 IBM 緩沖池,但是也可以使用 Create 按鈕創(chuàng)建新的緩沖池。點(diǎn)擊 Next。圖 10. 創(chuàng)建新的表空間 —— 指定緩沖池
4. 這個(gè)面板允許指定表空間是由數(shù)據(jù)庫(kù)管理(DMS),還是由系統(tǒng)管理(SMS)。選擇 Database-managed space (high performance)。點(diǎn)擊 Next。Containers 頁(yè)面出現(xiàn)。
5. 在 Containers 頁(yè)面上,可以指定容器的數(shù)量。容器(Container) 可以是存儲(chǔ)表空間數(shù)據(jù)的目錄、文件或設(shè)備。可以為每個(gè)表空間創(chuàng)建多個(gè)容器,而且在創(chuàng)建表空間之后,可以刪除現(xiàn)有的容器或添加更多的容器。點(diǎn)擊 Add,Define Container 頁(yè)面出現(xiàn),可以在這里為新的表空間定義容器。
6. 可以為新的表空間定義多個(gè)容器。不同的容器可以位于不同的物理節(jié)點(diǎn)或路徑。按照?qǐng)D 11 所示添加容器,然后點(diǎn)擊 OK。
圖 11. 創(chuàng)建新的表空間 —— 添加容器
7. 用相同的操作添加相同路徑上的另一個(gè)容器 tbsp_data1_c02。
8. 應(yīng)該會(huì)看到添加的兩個(gè)容器,見(jiàn)圖 12。每個(gè)容器的大小是 5MB,總共 10MB。如果對(duì)已經(jīng)定義的容器不滿意,那么點(diǎn)擊 Change 或 Remove。點(diǎn)擊 Next 繼續(xù)。
圖 12. 創(chuàng)建新的表空間 —— 容器頁(yè)面
9. 下一個(gè)頁(yè)面幫助您定義這個(gè)表空間使用的區(qū)間和預(yù)獲取大小。一個(gè)區(qū)間(extent)包含一系列連續(xù)的頁(yè)面。頁(yè)面的數(shù)量稱為區(qū)間的大小。一般來(lái)說(shuō),希望一次分配多個(gè)頁(yè)面,從而減少空間分配的開(kāi)銷。預(yù)獲取大小是指在啟用預(yù)獲取時(shí)預(yù)獲取器讀取的頁(yè)面數(shù)量。預(yù)獲取的概念在前面討論過(guò)。選擇 Less than 25MB 來(lái)改變表的平均大小,建議的區(qū)間大小會(huì)自動(dòng)地改為適當(dāng)?shù)脑O(shè)置。
10. 點(diǎn)擊 Summary 顯示 Summary 頁(yè)面。點(diǎn)擊 Show SQL 并將 SQL 保存在 C:DB2hellowldcrt_tbsp.clp 中。點(diǎn)擊 Finish 讓 Create Tablespace 向?qū)瓿刹僮鳌?/p>
11. 在 Control Center Table Spaces 視圖中,應(yīng)該能夠找到新的表空間 TBSP_DATA1。如果對(duì)新創(chuàng)建的表空間 TBSP_DATA1 不完全滿意,那么點(diǎn)擊 Alter Tablespace 來(lái)修改這個(gè)表空間。如果希望創(chuàng)建 SMS 表空間,那么點(diǎn)擊 Create New Tablespace。
圖 13. Control Center —— Tablespace 視圖
12. 將索引、大對(duì)象(Large Object,LOB)和大字段(Long Field,LF)或 XML 數(shù)據(jù)與表數(shù)據(jù)分開(kāi)存儲(chǔ)是有好處的。但是,在本教程中沒(méi)有 LOB/LF 數(shù)據(jù),所以不需要為它們創(chuàng)建表空間。XML 數(shù)據(jù)存儲(chǔ)在與其他數(shù)據(jù)相同的表空間 TBSP_DATA1 中,所以也不需要為它創(chuàng)建表空間。后面幾節(jié)將討論索引。
13. 在 DB2 命令行上,輸入 cd C:DB2HELLOWLD 來(lái)創(chuàng)建表空間。如果目錄 HELLOWLD 還不存在,需要首先創(chuàng)建它。然后,運(yùn)行以下命令 notepad crt_tbsp.clp。在 notepad 中,編輯 Create Tablespace 語(yǔ)句,將它改為以下代碼: CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING
(FILE 'C:DB2NODE0000hellowlddbdirtbsp_index1_c01' 5120,
FILE 'C:DB2NODE0000hellowlddbdirtbsp_index1_c02' 5120)
EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP;
14. 將 COMMENT 語(yǔ)句改為: COMMENT ON TABLESPACE TBSP_INDEX1 IS 'tablespace to hold index data';
現(xiàn)在 crt_tbsp.clp 中的命令應(yīng)該是下面這樣:CONNECT TO HELLOWLD; CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING (FILE 'C:DB2NODE0000hellowlddbdirtbsp_index1_c01' 5120, FILE 'C:DB2NODE0000hellowlddbdirtbsp_index1_c02' 5120 ) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP ; COMMENT ON TABLESPACE TBSP_INDEX1 IS 'tablespace to hold index data'; CONNECT RESET; 15. 保存并退出 notepad。
16. 在 DB2 命令行窗口中運(yùn)行 db2 -tvf crt_tbsp.clp 命令,應(yīng)該會(huì)看到成功地創(chuàng)建了這個(gè)表空間。DB2 命令行選項(xiàng) -tvf 允許運(yùn)行來(lái)自文件的 DB2 命令。
17. 進(jìn)入 Control Center,點(diǎn)擊 Control Center 主菜單中的 Selected,然后點(diǎn)擊下拉菜單中的 Refresh,查看到目前為止創(chuàng)建的所有表空間。
相關(guān)文章:
1. DB2 XML 全文搜索之為文本搜索做準(zhǔn)備2. DB2數(shù)據(jù)庫(kù)物化視圖:MQT物化查詢表的使用3. 在DB2數(shù)據(jù)庫(kù)的表中插入和刪除數(shù)據(jù)4. Db2數(shù)據(jù)庫(kù)中常見(jiàn)的堵塞問(wèn)題分析與處理方法5. 講解主機(jī)DB2 9存儲(chǔ)過(guò)程的規(guī)劃和實(shí)施技巧6. DB2數(shù)據(jù)庫(kù)部分日常實(shí)用操作7. 分析DB2活動(dòng)日志滿的原因及解決DB2日志滿方法與避免方案8. 安裝DB2 9數(shù)據(jù)庫(kù)需要的內(nèi)存和磁盤條件9. 提高商業(yè)智能環(huán)境中DB2查詢的性能(2)10. DB2 9(Viper)快速入門
