qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          跟屌絲一起學習 DB2 第三課 創建表空間

          緩沖池(bufferpool) 是一個內存塊的集合,這些內存塊采用頁面的形式。在首次創建數據庫時,同時創建了一個默認的緩沖池 IBMDEFAULTBP。可以在創建表空間時,或者在 Buffer Pools 視圖中使用 Create New Bufferpool 向導,創建新的緩沖池。

            緩沖池最重要的作用是,在數據庫讀寫硬盤上的數據時幫助減少 I/O 開銷。這是通過 I/O 預獲取和頁面清理器實現的。預獲取能夠減少讀取頁面的 I/O 開銷,其原理是:預先判斷特定查詢可能需要的頁面,然后將這些頁面讀入緩沖池,因此當查詢需要它們時,它們已經準備好了。頁面清理器確保將事務不再需要的已經更新的頁面首先寫到硬盤上,然后從緩沖池中清除它們。這確保緩沖池中有足夠的干凈空間可以讀取頁面。

            DB2 支持不同的頁面大小:2K、4K、8K、16K 和 32K。IBMDEFAULTBP 使用 4K 的頁面大小。如果希望創建采用其他頁面大小的表空間,那么首先要確保數據庫中有采用這種頁面大小的緩沖池。多個表空間可以使用同一個緩沖池。在創建或更改表空間時,可以指定要使用哪個緩沖池。選擇和創建適當的緩沖池對于數據庫性能很重要。可以根據需要創建新的緩沖池或更改現有的緩沖池。 DB2數據庫中的表空間(tablespace) 是一個邏輯層,一些數據庫對象(比如表、視圖和索引)駐留在這里。一個數據庫可以有多個表空間。在首次創建數據庫時,DB2 會自動地創建一組表空間。
           在 Control Center 中,展開 HELLOWLD 并點擊 Table Spaces。應該會在 Control Center 右邊的窗口中看到三個表空間,如圖 7 所示:

          圖 7. Control Center Table Spaces 視圖

            Control Center Tablespaces 視圖

           這些表空間是 DB2 在創建數據庫 HWLD 時創建的。SYSCATSPACE 和 TEMPSPACE1 都是系統表空間,不能刪除或重新創建它們。SYSCATSPACE 是系統編目表空間,用來存儲關于數據庫的元信息。TEMPSPACE1 在某些數據庫操作期間用來存儲臨時結果。USERSPACE1 是默認的用戶表空間,用來存儲表、視圖和索引等用戶數據。任何具有足夠權力的 DB2 用戶都可以刪除和重新創建 USERSPACE1 或者創建其他用戶表空間。

           SMS 或 DMS 表空間

            在創建表空間時,可以選擇表空間是 SMS 表空間還是 DMS 表空間。SMS 代表 System Managed Space,DMS 代表 Database Managed Space。在 SMS 表空間中,空間由操作系統的文件系統管理,會根據需要分配空間。SMS 表空間需要的初始設置比較少,管理方面需要考慮的因素少,而且一般更容易創建和使用,因為空間會在需要時自動地分配。在 DMS 表空間中,空間由 DB2 管理。DMS 表空間需要在創建時預先分配空間,所以需要進行比較多的初始設置工作,管理方面也有更多需要考慮的因素。但是,它為用戶提供了更大的靈活性,可以更好地控制數據的布局并改進數據訪問的性能。在一般情況下,經過良好設計和調優的 DMS 表空間可以提供比相似的 SMS 表空間更好的性能。

           在 Table Spaces 視圖中,點擊每個表空間。查看在右下方的窗口中顯示的詳細信息。SYSCATSPACE 和 USERSPACE1 都是 DMS 表空間,TEMPSPACE1 是 SMS 表空間。您還可以創建自己的表空間。

          屌絲 已經創建了 自己的表空間 你看 


          當然你也可以用命令插入了 插入 插入。。。。。屌絲非常忌諱的詞


          只有sysadm和sysctl的權限才可以創建表空間

          只有在緩沖池創建或者激活的狀態才能使用create tablespace命令

          緩沖池可以動態的增加、刪除和變更

          DFT_PREFETCH_SZ能夠優化計算的環境

          create                  [LARGE/REGULAR/TEMPORARY]

                 TABLESPACE       tablespace

                 PAGESIZE integer

                 MANAGED BY       [AUTOMATIC STORAGE][SYSTEM/DATABASE]

                                  [system-container/database-container]

                 EXTENTSIZE [number-of-pages/integer]

                 PREFETCHSIZE [number-of-pages/integer]

                 BUFFERPOOL bufferpool-name

                 OVERHEAD number-of-milliseconds (系統默認)

                 TRANSFEBRATE number-of-milliseconds

                 ...

                 AUTORESIZE YES

                 USING (DEVICE 'Container-String' integer K|M|G)

          這里是個例子 大家可以聯系下 create tabblespace 屌絲 managed by database using (device '/dev/rhdisk0' 10000(頁數),device'/dev/rn1hd01' 40G)

          注意這里的pagesize bufferpool中的pagesize是相同的

           表空間的類型

          Create  {largeregular[system/user] temporary} TABLESAPCE name


           

          (1) 常規表空間(REGULAR)

          SMS時默認為regular

          存儲用戶數據,如USERSPACE1

          (2) 臨時表空間

          系統臨時表空間:DB2用來排序

          用戶臨時表空間:被用來定義全局臨時表空間在內存里

          創建用戶臨時表空間:

            用戶臨時表空間用來存儲已說明的臨時表。

          CREATE USER TEMPORARY TABLESPACE usr_tbsp

            MANAGED BY DATABASE

            USING (FILE 'd:\db2data\user_tbsp' 5000,

                   FILE 'e:\db2data\user_tbsp' 5000)


          (3) 大型表空間

          DMS時 默認是LARGE

          存儲多媒體對象或其他大型對象數據

          接下來 屌絲大哥 為你介紹表空間緩沖池

          緩沖池(bufferpool) 是一個內存塊的集合,這些內存塊采用頁面的形式。在首次創建數據庫時,同時創建了一個默認的緩沖池 IBMDEFAULTBP。可以在創建表空間時,或者在 Buffer Pools 視圖中使用 Create New Bufferpool 向導,創建新的緩沖池。

            緩沖池最重要的作用是,在數據庫讀寫硬盤上的數據時幫助減少 I/O 開銷。這是通過 I/O 預獲取和頁面清理器實現的。預獲取能夠減少讀取頁面的 I/O 開銷,其原理是:預先判斷特定查詢可能需要的頁面,然后將這些頁面讀入緩沖池,因此當查詢需要它們時,它們已經準備好了。頁面清理器確保將事務不再需要的已經更新的頁面首先寫到硬盤上,然后從緩沖池中清除它們。這確保緩沖池中有足夠的干凈空間可以讀取頁面。

            DB2 支持不同的頁面大小:2K、4K、8K、16K 和 32K。IBMDEFAULTBP 使用 4K 的頁面大小。如果希望創建采用其他頁面大小的表空間,那么首先要確保數據庫中有采用這種頁面大小的緩沖池。多個表空間可以使用同一個緩沖池。在創建或更改表空間時,可以指定要使用哪個緩沖池。選擇和創建適當的緩沖池對于數據庫性能很重要。可以根據需要創建新的緩沖池或更改現有的緩沖池。
           在 Control Center 中,點擊 Buffer Pools。可以看到數據庫中的所有緩沖池。選擇創建新的緩沖池或更改現有的緩沖池。


          看到了么  屌絲大哥 也創建了個緩沖池 是不是很給力??

          DB2 系統目錄表和視圖

            在創建新數據庫時,DB2 會在編目表空間中創建多個系統編目表和視圖。這些系統編目表和視圖用來跟蹤數據庫管理程序需要知道的關于數據庫對象、訪問控制信息和工具的重要信息。系統編目視圖基于基本系統編目表。用戶在一般情況下通過查詢系統編目視圖來查看感興趣的系統編目表數據。

            在 Control Center 中,在 All Database 視圖下面,展開 HELLOWLD,然后選擇 Table Spaces。選擇右上窗口中顯示的 SYSCATSPACE。可以在右下窗口中看到這個表空間的概況:

          Control Center —— Tablespaces 視圖

            CC —— Tablespaces 視圖

            點擊 Show Related Objects。會出現一個新頁面,其中顯示表空間 SYSCATSPACE 中的所有表和索引,以及它們的模式 SYSIBM。點擊 Indexes,列出 SYSCATSPACE 中的所有索引。Show SQL 顯示用來獲得這個表空間中的表或索引列表的 select 命令。

           表、索引、模式和視圖都是重要的 DB2 對象,本教程后面都會詳細討論。但是,首先試試手工創建表空間:

          1. 在 Control Center 中點擊 Create New Tablespace,啟動 Create Table Space 向導。輸入 TBSP_DATA1 作為表空間名,在 comment 中輸入 DMS tablespace to hold data。
          2. 選擇 Regular 來選擇要使用的表空間類型并點擊 Next。出現 Specify a buffer pool 面板,在這里選擇這個表空間要使用的緩沖池。
          3. 使用默認的 IBM 緩沖池,但是也可以使用 Create 按鈕創建新的緩沖池。點擊 Next。

          創建新的表空間 —— 指定緩沖池

            創建新的表空間 —— 步驟 2

           4. 這個面板允許指定表空間是由數據庫管理(DMS),還是由系統管理(SMS)。選擇 Database-managed space (high performance)。點擊 Next。Containers 頁面出現。

            5. 在 Containers 頁面上,可以指定容器的數量。容器(Container) 可以是存儲表空間數據的目錄、文件或設備。可以為每個表空間創建多個容器,而且在創建表空間之后,可以刪除現有的容器或添加更多的容器。點擊 Add,Define Container 頁面出現,可以在這里為新的表空間定義容器。

            6. 可以為新的表空間定義多個容器。不同的容器可以位于不同的物理節點或路徑。按照圖 11 所示添加容器,然后點擊 OK。

           圖 11. 創建新的表空間 —— 添加容器

            創建新的表空間 —— 添加容器

            7. 用相同的操作添加相同路徑上的另一個容器 tbsp_data1_c02。

            8. 應該會看到添加的兩個容器,見圖 12。每個容器的大小是 5MB,總共 10MB。如果對已經定義的容器不滿意,那么點擊 Change 或 Remove。點擊 Next 繼續。

            圖 12. 創建新的表空間 —— 容器頁面

            創建新的表空間 —— 容器頁面

            9. 下一個頁面幫助您定義這個表空間使用的區間和預獲取大小。一個區間(extent)包含一系列連續的頁面。頁面的數量稱為區間的大小。一般來說,希望一次分配多個頁面,從而減少空間分配的開銷。預獲取大小是指在啟用預獲取時預獲取器讀取的頁面數量。預獲取的概念在前面討論過。選擇 Less than 25MB 來改變表的平均大小,建議的區間大小會自動地改為適當的設置。

            10. 點擊 Summary 顯示 Summary 頁面。點擊 Show SQL 并將 SQL 保存在 C:\DB2\hellowld\crt_tbsp.clp 中。點擊 Finish 讓 Create Tablespace 向導完成操作。

            11. 在 Control Center Table Spaces 視圖中,應該能夠找到新的表空間 TBSP_DATA1。如果對新創建的表空間 TBSP_DATA1 不完全滿意,那么點擊 Alter Tablespace 來修改這個表空間。如果希望創建 SMS 表空間,那么點擊 Create New Tablespace。

            圖 13. Control Center —— Tablespace 視圖

            Control Center —— Tablespace 視圖

            12. 將索引、大對象(Large Object,LOB)和大字段(Long Field,LF)或 XML 數據與表數據分開存儲是有好處的。但是,在本教程中沒有 LOB/LF 數據,所以不需要為它們創建表空間。XML 數據存儲在與其他數據相同的表空間 TBSP_DATA1 中,所以也不需要為它創建表空間。后面幾節將討論索引。

            13. 在 DB2 命令行上,輸入 cd C:\DB2\HELLOWLD\ 來創建表空間。如果目錄 HELLOWLD 還不存在,需要首先創建它。然后,運行以下命令 notepad crt_tbsp.clp。在 notepad 中,編輯 Create Tablespace 語句,將它改為以下代碼: CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING

            (FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c01' 5120,

            FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c02' 5120)

            EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP;

            14. 將 COMMENT 語句改為: COMMENT ON TABLESPACE TBSP_INDEX1 IS'tablespace to hold index data';

            現在 crt_tbsp.clp 中的命令應該是下面這樣:

          CONNECT TO HELLOWLD; 

          CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING 
          (FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c01' 5120, 
          FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_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 命令行窗口中運行 db2 -tvf crt_tbsp.clp 命令,應該會看到成功地創建了這個表空間。DB2 命令行選項 -tvf 允許運行來自文件的 DB2 命令。

            17. 進入 Control Center,點擊 Control Center 主菜單中的 Selected,然后點擊下拉菜單中的 Refresh,查看到目前為止創建的所有表空間。


           

          posted on 2012-12-06 15:40 順其自然EVO 閱讀(1248) 評論(0)  編輯  收藏 所屬分類: DB2

          <2012年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 辽宁省| 建湖县| 沅陵县| 新营市| 崇礼县| 义马市| 沁源县| 台山市| 北流市| 北川| 乌兰县| 广灵县| 万荣县| 阳原县| 红安县| 临夏县| 策勒县| 永登县| 小金县| 田东县| 苏尼特左旗| 比如县| 当涂县| 杭州市| 巧家县| 慈溪市| 永靖县| 临泉县| 芦山县| 江安县| 通辽市| 东兴市| 呼玛县| 武穴市| 合水县| 奈曼旗| 交城县| 锦州市| 繁峙县| 武安市| 武邑县|