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…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注