db2與oracle的全面對比12

 

 

8     tablespace與bufferpool

8.1    表空間類型

    DB2 的表空間按管理方式

    系統管理空間(System Management SpaceSMS)和數據庫管理空間(Database Management SpaceDMS)。

    按類型分為:規則表空間、大對象表空間、系統臨時表空間、用戶臨時表空間

  規則表空間中包含用戶數據的表。默認用戶表空間名為USERSPACE1,索引也存儲在規則表空間中,另外系統目錄表也放在規則表空間中。默認的系統目錄表空間名為SYSCATSPACE

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

系統臨時表空間用來存儲各種數據操作(排序、重組表、創建索引、連接表)中所需的內部臨時數據,雖然可以創建任意多個系統臨時表空間,默認系統臨時表空間名為TEMPSPACE1

用戶臨時表空間用來存儲已說明全局臨時表(已說明全局臨時表存儲的是應用程序臨時數據)。用戶臨時表空間不是在數據庫創建時默認創建的。

•    
容器:每個表空間都有一個或多個容器。每個容器只能屬於一個表空間,但是一個表空間可以擁有許多容器。可以將容器添加到 DMS 表空間,或者從 DMS 表空間中刪除容器,而且可以更改容器的大小。添加新的容器時,將啟動一個自動的重新均衡操作以便將數據分布到所有容器上。重新均衡操作不會妨礙對數據庫的並發訪問。

 

8.2    緩衝池

一個緩衝池是與單個數據庫相關聯的,可以被多個表空間使用。當考慮將緩衝池用於一個或多個表空間時,必須保證表空間頁大小和緩衝池頁大小對於緩衝池所服務的所有表空間而言都是一樣的。一個表空間只能使用一個緩衝池。
創建數據庫時,會創建一個名為 IBMDEFAULTBP 的缺省緩衝池,所有的表空間都共享該緩衝池。可以使用 CREATE BUFFERPOOL 語句添加更多的緩衝池。緩衝池的缺省大小是 BUFFPAGE 數據庫配置參數所指定的大小,但是可以通過在 CREATE BUFFERPOOL 命令中指定 SIZE 關鍵字來覆蓋該缺省值。足夠的緩衝池大小是數據庫擁有良好性能的關鍵所在,因為它可以減少磁盤 I/O 這一最耗時的操作。大型緩衝池還會對查詢優化產生影響,因為更多的工作可在內存中完成。

 

8.3    相關命令

    例一:在Windows上創建一個SMS表空間:

    CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM USING (‘d:\acc_tbsp’,’e:\acc_tbsp’,’f:\acc_tbsp’)

    完成的結果為在DEF三個磁盤上創建了三個名稱為acc_tbsp的文件夾,每個文件夾下面都有一個名為SQLTAG.NAM的文件。

    例二:刪除例一所創建的SMS表空間。

    DROP TABLESPACE RESOURCE

    運行完這條命令,相應的表空間會從DB2註冊表中刪除,但是磁盤上的三個文件夾仍然存在,需要手工刪除。

    用命令行方式創建DMS表空間的簡單語法:

    CREATE TABLESPACE <NAME> MANAGED BY DATABASE USING (FILE ‘<path>’ <size>)

    或者

    CREATE TABLESPACE <NAME> MANAGED BY DATABASE USING (DEVICE ‘<path>’ <size>)

    例三:在Windows上創建一個DMS表空間,使用各自有5000頁的兩個文件容器:

    CREATE TABLESPACE RESOURCE MANAGED BY DATABASE USING (FILE ‘d:\db2data\acc_tbsp’ 5000, FILE ‘e:\db2data\acc_tbsp’ 5000)

    運行結果為:在DE磁盤的db2data文件夾下面各創建了一個名為acc_tbsp的文件,大小都為20000K(默認情況下每頁大小為4K)。

    例四:在例三所創建的表空間中添加一個容器。

    ALTER TABLESPACE RESOURCE ADD(FILE ‘f:\db2data\acc_tbsp’ 5000)

    運行的結果為在RESOURCE表空間中包含了三個容器(文件):d:\db2data\acc_tbsp e:\db2data\acc_tbsp f:\db2data\acc_tbsp

    例五:用RESIZE子句更改例三所創建的表空間的容器的大小。

    ALTER TABLESPACE RESOURCE RESIZE (file ‘d:\db2data\acc_tbsp’ 8000, file ‘e:\db2data\acc_tbsp’ 8000, file ‘f:\db2data\acc_tbsp’ 8000)

    每個容器(文件)的大小變為8000頁。把容器的容量變大不會出錯,但是如果容器中的數據已經充滿,再把容器的容量縮小,則會引起錯誤。

    例六:用EXTEND子句更改例三所創建的表空間的容器的大小。

    ALTER TABLESPACE RESOURCE EXTEND (file ‘d:\db2data\acc_tbsp’ 1000, file ‘e:\db2data\acc_tbsp’ 1000, file ‘f:\db2data\acc_tbsp’ 1000)

    該命令的運行結果為在原有容量的基礎之上,每個容器再增加1000頁。

    例七:刪除例三中創建的DMS表空間

    DROP TABLESPACE RESOURCE

    運行的結果為在DB2的註冊表中把RESOURCE表空間刪除,同時在磁盤上把相對應的文件夾和文件都一起自動刪除。

    例八:在UNIX上創建一個DMS表空間,使用各有10000頁的3個邏輯卷:

    CREATE TABLESPACE RESOURCE MANAGED BY DATABASE USING (DEVICE ‘/dev/rdblv6’ 10000, DEVICE ‘/dev/rdblv7’ 10000, DEVICE ‘/dev/rdblv8’ 10000)

    例九:CREATE BUFFERPOOL 語句的示例    

     CREATE BUFFERPOOL BP3 SIZE 2000 PAGESIZE 8K

    該緩衝池被分配給上面的 CREATE TABLESPACE 示例上的 USERSPACE3,並且在創建表空間之前創建該緩衝池。請注意,緩衝池和表空間的頁大小都是 8K,兩者是相同的

    更改表空間的BUFFERPOOL:

ALTER TABLESPACE USERSPACE3 BUFFERPOOL BP3

    如何查看緩衝池屬性

    通過查詢 SYSCAT.BUFFERPOOLS 系統視圖可以列出緩衝池信息:

    SELECT * FROM SYSCAT.BUFFERPOOLS

    BPNAME BUFFERPOOLID NGNAME NPAGES PAGESIZE ES

    —————— ———— —————— ———– ———– —

    IBMDEFAULTBP 1 – 250 4096 N

     1 record(s) selected.

    查找緩衝池被分配給了表空間情況

    SELECT TBSPACE, BUFFERPOOLID FROM SYSCAT.TABLESPACES

    TBSPACE BUFFERPOOLID

    —————— ————

    SYSCATSPACE 1

    TEMPSPACE1 1

    USERSPACE1 1

3 record(s) selected.

    查看錶空間的屬性和容器

    # LlST TABLESPACES SHOW DETAIL

     Tablespaces for Current Database

    Tablespace ID = 2

    Name = USERSPACE1

    Type = System managed space

    Contents = Any data

    State = 0x0000

     Detailed explanation:

     Normal

    Total pages = 336

    Useable pages = 336

    Used pages = 336

    Free pages = Not applicable

    High water mark (pages) = Not applicable

    Page size (bytes) = 4096

    Extent size (pages) = 32

    Prefetch size (pages) = 16

    Number of containers = 1

    要列出容器,根據 Tablespace ID

    #LIST TABLESPACE CONTAINERS FOR 2

Tablespace Containers for Tablespace 2

     Container ID = 0

     Name = C:\\DB2\\NODE0000\\SQL00004\\SQLT0002.0

     Type = Path

 

 

8.4    表空間與緩衝池關係


9     分區數據庫介紹

9.1    分區數據庫架構

 

將一個數據庫分區時,我們把它分成一些獨立的部分,每一部分都包含各自的數據、配置文件、索引和事務日誌。每一部分就是一個數據庫分區。可以將多個分區分派到一台物理機器上。有時候,這些分區也叫做邏輯分區(logical partition),這些邏輯分區共享機器上的資源。
單分區數據庫是一種只有一個分區的數據庫。

  多分區數據庫(也稱分區數據庫),分區也可稱為節點,是具有兩個或多個分區的數據庫,浙江移動經營分析系統均兩台SMP主機組成的分區數據庫。

 


9.2    分區鍵選擇

分區鍵(partitioning key)是一個列(或者一組列),用於確定某一行特定數據所在的那個分區。分區鍵是在一個表上使用 CREATE TABLE 語句來定義的。 DB2 使用分區圖再加上分區鍵以及散列算法(hashing algorithm)來確定數據庫分區組中哪一個數據庫分區將存儲給定的一行數據


 

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營

發表評論

您的電子郵箱地址不會被公開。 必填項已用*標註