WEB开发网
开发学院数据库DB2 DB2基础:表空间和缓冲池 阅读

DB2基础:表空间和缓冲池

 2009-12-12 14:59:21 来源:WEB开发网   
核心提示:容器每个表空间都有一个或多个容器,重申一次,DB2基础:表空间和缓冲池(2),您可以认为容器是孩子,而表空间是其父母,因为它可以减少磁盘 I/O 这一最耗时的操作,大型缓冲池还会对查询优化产生影响,每个容器只能属于一个表空间,但是一个表空间可以拥有许多容器

容器

每个表空间都有一个或多个容器。重申一次,您可以认为容器是孩子,而表空间是其父母。每个容器只能属于一个表空间,但是一个表空间可以拥有许多容器。可以将容器添加到 DMS 表空间,或者从 DMS 表空间中删除容器,而且可以更改容器的大小。只能将容器添加到某个分区中分区数据库上的 SMS 表空间,在添加之前该分区还未给表空间分配容器。添加新的容器时,将启动一个自动的重新均衡操作以便将数据分布到所有容器上。重新均衡操作不会妨碍对数据库的并发访问。

表空间设置

可以在创建表空间时给它们指定许多设置,或者也可以稍后使用 altER TABLESPACE 语句时指定其设置。

页大小(Page size) 定义表空间所使用的页大小。所支持的大小为 4K、8K、16K 和 32K。页大小根据下表限定了可放到表空间中的表的行长度和列数:

表 1. 页大小的含义

页大小 行大小限制 列数限制 最大容量
4 KB 4 005 500 64 GB
8 KB 8 101 1 012 128 GB
16 KB 16 293 1 012 256 GB
32 KB 32 677 1 012 512 GB

表空间最多可包含 16384 个页,因此选择较大的页大小可以增加表空间的容量。

扩展块大小(Extent size) 指定在跳到下一个容器之前将写到当前容器中的页数。存储数据时数据库管理器反复循环使用所有容器。该参数只有在表空间中有多个容器时才起作用。 预取大小(Prefetch size) 指定当执行数据预取时将从表空间读取的页数。预取操作在查询引用所需的数据之前读入这些数据,这样一来查询就不必等待执行 I/O 了。当数据库管理器确定顺序 I/O 是适当的,并且确定预取操作可能有助于提高性能时,它就选择预取操作。 开销(Overhead)和传送速率(Transfer rate) 这些值用于确定查询优化期间的 I/O 成本。这两个值的测量单位都是毫秒,而且它们应当分别是所有容器开销和传送速率的平均值。开销是与 I/O 控制器活动、磁盘寻道时间和旋转延迟时间相关联的时间。传送速率是将一个页读入内存所必需的时间量。它们的缺省值分别是 24.1 和 0.9。可以根据硬件规格计算这些值。

CREATE TABLESPACE 语句的示例

下列语句将创建一个常规表空间。所讨论的所有设置都是为了进行说明。

CREATE TABLESPACE USERSPACE3
  PAGESIZE 8K
  MANAGED BY SYSTEM
  USING ('d:usp3_cont1', 'e:usp3_cont2', 'f:usp3_cont3')
  EXTENTSIZE 64
  PREFETCHSIZE 32
  BUFFERPOOL BP3
  OVERHEAD 24.1
  TRANSFERRATE 0.9

如何查看表空间的属性和容器

指定 LIST TABLESPACES 命令的 SHOW DETAIL 选项将显示其它信息:

LIST TABLESPACES SHOW DETAIL

清单 2显示了 USERSPACE1 表空间的输出。缺省情况下,将列出创建数据库时所创建的那三个表空间。

清单 2. 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

清单 3. LIST TABLESPACE CONTAINERS 命令的输出

Tablespace Containers for Tablespace 2
Container ID             = 0
Name                 = C:DB2NODE0000SQL00004SQLT0002.0
Type                 = Path

该命令将列出指定表空间中的所有容器。如上所示的路径指向容器物理上所在的位置。

缓冲池

一个缓冲池是与单个数据库相关联的,可以被多个表空间使用。当考虑将缓冲池用于一个或多个表空间时,必须保证表空间页大小和缓冲池页大小对于缓冲池所“服务”的所有表空间而言都是一样的。一个表空间只能使用一个缓冲池。

创建数据库时,会创建一个名为 IBMDEFAULTBP 的缺省缓冲池,所有的表空间都共享该缓冲池。可以使用 CREATE BUFFERPOOL 语句添加更多的缓冲池。缓冲池的缺省大小是 BUFFPAGE 数据库配置参数所指定的大小,但是可以通过在 CREATE BUFFERPOOL 命令中指定 SIZE 关键字来覆盖该缺省值。足够的缓冲池大小是数据库拥有良好性能的关键所在,因为它可以减少磁盘 I/O 这一最耗时的操作。大型缓冲池还会对查询优化产生影响,因为更多的工作可在内存中完成。

上一页  1 2 3 4  下一页

Tags:DB 基础 空间

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接