DB2基础:表空间和缓冲池
2009-12-12 14:59:21 来源:WEB开发网容器
每个表空间都有一个或多个容器。重申一次,您可以认为容器是孩子,而表空间是其父母。每个容器只能属于一个表空间,但是一个表空间可以拥有许多容器。可以将容器添加到 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 这一最耗时的操作。大型缓冲池还会对查询优化产生影响,因为更多的工作可在内存中完成。
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
- ››DB2 pureScale 实战
更多精彩
赞助商链接