DB2基础:表空间和缓冲池

本文专为 IBM DB2 Universal Database for Linux、UNIX 和 Windows 而撰写

简介

对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑。在本文中,我们将讨论 DBA 要做出重要选择的两个方面:表空间和缓冲池。表空间和缓冲池的设计和调优会对 DB2 服务器的性能产生深远的影响,因此我们将着重讨论这些活动。

在我们的示例中,我们将使用 DB2 V8.1 企业服务器版。大多数示例也适用于低级版本。我们会让您知道某个示例是否只适用于 V8.1。

在 第 1 节中,我们将从定义表空间的类型开始,并将说明 DB2 如何将数据存储在表空间中。我们将介绍配置选项并向您介绍创建和管理表空间的整个过程。接下来,我们将着重讨论 缓冲池,介绍缓冲池是什么以及如何创建和使用它。在 第 2 节中,我们将结合这两个方面并讨论该如何组织缓冲池和表空间才能获得最佳性能。

第 1 节:定义

表空间

数据库中的所有数据都存储在许多表空间中。可以认为表空间是孩子而数据库是其父母,其中表空间(孩子)不能有多个数据库(父母)。由于表空间有不同用途,因此根据它们的用途和管理方式将它们分类。根据用途有五种不同的表空间:

目录表空间 每个数据库只有一个目录表空间,它是在发出 CREATE DATABASE 命令时创建的。目录表空间被 DB2 命名为 SYSCATSPACE,它保存了系统目录表。总是在创建数据库时创建该表空间。 常规表空间 常规表空间保存表数据和索引。它还可以保存诸如大对象(Large Object,LOB)之类的长数据,除非这些数据显式地存储在长表空间中。如果某些表空间是数据库管理的空间(Database Managed Space,DMS),则可以将表及其索引分别放到单独的常规表空间中。我们将在本文后面定义 DMS 和系统管理的空间(System Managed Space,SMS)之间的区别。每个数据库中必须至少有一个常规表空间。创建数据库时指定该表空间的缺省名为 USERSPACE1。 长表空间 长表空间用于存储长型或 LOB 表列,它们必须驻留在 DMS 表空间中。它们还可以存储结构化类型的列或索引数据。如果没有定义长表空间,那么将把 LOB 存储在常规表空间中。长表空间是可选的,缺省情况下一个都不创建。 系统临时表空间 系统临时表空间用于存储 SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据。每个数据库必须至少有一个系统临时表空间。随数据库创建的系统临时表空间的缺省名为 TEMPSPACE1。 用户临时表空间 用户临时表空间存储已声明的全局临时表。创建数据库时不存在用户临时表空间。至少应当创建一个用户临时表空间以允许定义已声明的临时表。用户临时表空间是可选的,缺省情况下一个都不创建。

表空间管理

可以用两种不同的方式管理表空间:

系统管理的空间(SMS) SMS 表空间由操作系统进行管理。容器被定义成常规操作系统文件,并且是通过操作系统调用访问的。这意味着所有的常规操作系统功能将处理以下内容:操作系统将缓冲 I/O;根据操作系统约定分配空间;如有必要就自动扩展表空间。但是,不能从 SMS 表空间删除容器,并且仅限于将新的容器添加到分区的数据库。前一节中所说明的那三个缺省表空间都是 SMS。 数据库管理的空间(DMS) DMS 表空间是由 DB2 管理的。可以将容器定义成文件(在创建表空间时将把给定的大小全部分配给它们)或设备。分配方法和操作系统允许多少 I/O,DB2 就可以管理多少 I/O。可以通过使用 altER TABLESPACE 命令来扩展容器。还可以释放未使用的那部分 DMS 容器(从 V8 开始)。

下面是一个示例,向您说明该如何增大容器大小(V7 和 V8 都支持此功能):

ALTER TABLESPACE TS1
RESIZE (FILE '/conts/cont0' 2000,
DEVICE '/dev/rcont1' 2000,
FILE 'cont2' 2000)

请注意,只有 V8 才支持将原始容器的大小调整得更小。

如何创建和查看表空间

当您创建数据库时,将创建三个表空间(SYSCATSPACE、TEMPSPACE1 和 USERSPACE1)。通过使用 DB2 命令窗口(Command Window)或 UNIX 命令行,创建一个名为 testdb 的数据库,连接至该数据库,然后列出表空间:

CREATE DATABASE testdb
CONNECT TO testdb
LIST TABLESPACES

下面的 清单 1显示了 LIST TABLESPACES 命令的输出。

清单 1. LIST TABLESPACES 命令的输出

Tablespaces for Current Database
Tablespace ID            = 0
Name                 = SYSCATSPACE
Type                 = System managed space
Contents               = Any data
State                = 0x0000
 Detailed explanation:
  Normal
Tablespace ID            = 1
Name                 = TEMPSPACE1
Type                 = System managed space
Contents               = System Temporary data
State                = 0x0000
 Detailed explanation:
  Normal
Tablespace ID            = 2
Name                 = USERSPACE1
Type                 = System managed space
Contents               = Any data
State                = 0x0000
 Detailed explanation:
  Normal

上面所示的这三个表空间是通过 CREATE DATABASE 命令自动创建的。用户可以通过在该命令中包含表空间说明来覆盖缺省的表空间创建,但是在创建数据库时必须创建一个目录表空间和至少一个常规表空间,以及至少一个系统临时表空间。通过使用 CREATE DATABASE 命令或以后使用 CREATE TABLESPACE 命令,可以创建更多的所有类型的表空间(目录表空间除外)。

时间: 2025-01-21 03:51:55

DB2基础:表空间和缓冲池的相关文章

DB2面向OLTP环境的物理数据库设计:表空间和缓冲池

在设计表空间和物理设备上的容器位置时,我们的目标是最大限度地提高 I/O 的并行度,增加缓冲区利用率和缓冲池命中率.为了实现这一目标,您需要透彻了解数据库设计和应用程序. 了解表空间和缓冲池的工作原理以及它们影响数据库的整体性能的方式,这可以帮助您确定一些问题,例如,将两张表分隔到不同的设备是否会导致并行 I/O,或者是否应在一个单独的表空间中创建一个表,使该表可以被完全缓冲. 您的设计中要考虑的两个主要存储领域是: 1. 表空间.表空间的类型和设计可以决定对该表空间所执行的 I/O 效率. 2

使用DB2DART降低DB2数据库管理表空间高水位标记

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;本文介绍如何通过使用 DB2DART 工具降低 DB2 数据库管理表空间的高水位标记.      对于 DB2 数据库管理(DMS)表空间的高水位标记(HWM)是指该表空间曾经使用到的最大数据页数.如果使用: db2 list tablespaces show detail 看到某个 DMS 表空间的已用页数低于高水位标记,则有可能通过如下方法降低高水位标记: 重组表

DB2数据库表空间重定向恢复实例分析

一.发出重定向恢复命令 DB2 RESTORE DB OLDDB FROM "C:\OLDDBbak" TAKEN AT 20150717164847 TO "C:" INTO NEWDB REDIRECT 其中,OLDDB是旧数据库.备份的数据库名称,NEWDB是新数据库名称,不用事先创建也可以,C:\OLDDBbak是备份文件放置的目录,20150717164847是 备份文件的时间戳,具体可看备份文件的名字OLDDB.0.DB2.NODE0000.CATN00

跟屌丝一起学习 DB2 第三课 创建表空间

缓冲池(bufferpool) 是一个内存块的集合,这些内存块采用页面的形式.在首次创建数据库时,同时创建了一个默认的缓冲池 IBMDEFAULTBP.可以在创建表空间时,或者在 Buffer Pools 视图中使用 Create New Bufferpool 向导,创建新的缓冲池. 缓冲池最重要的作用是,在数据库读写硬盘上的数据时帮助减少 I/O 开销.这是通过 I/O 预获取和页面清理器实现的.预获取能够减少读取页面的 I/O 开销,其原理是:预先判断特定查询可能需要的页面,然后将这些页面读

DB2表空间理论基础(原创)

在DB2 V9版本中表空间的管理方式有系统管理表空间(SMS),数据库管理表空间(DMS)和自动存储管理,下面就以表空间的管理方式来介绍DB2的表空间 系统管理空间概述  在SMS(系统管理空间)表空间中,操作系统的文件系统管理器分配和管理用于存储表的空间.该存储模型通常由存储在文件系统空间中的多个文件组成,这些文件表示表对象.用户决定文件的位置.DB2 数据库 Linux 版.UNIX 版和 Windows 版控制它们的名称,而文件系统负责管理它们.通过控制写入每个文件的数据量,数据库管理器均

db2表空间页大小的问题的解决

db2表空间页大小的问题. 今天新建了一张表,表的字段大小及数目比较多,在执行sql遇到 [IBM][CLI Driver][DB2/NT] SQL0286N 找不到页大小至少为 "8192".特许使用权限标识 "IES" 的缺省表空间. SQLSTATE=42727 Execution Failed! 经查是db2初始表空间页大小是4K.无法存放.于是准备修改用户表空间,但db2 7.2又无法进行修改.所以,只有新建一个页大小为8K的用户表空间.USERSPACE

DB2表空间管理详解(原创)

create tablespace语法树 >>-CREATE --+-----------------------+---------------------------->            +-LARGE-----------------+               +-REGULAR---------------+               | .-SYSTEM-.            |               '-+--------+--TEMPORARY-'  

【DB2学习】查看一个数据的表空间详情

db2 => list tablespaces show detail            当前数据库的表空间  表空间标识                        = 0  名称                       = SYSCATSPACE  类型                                       = 数据库管理空间  内容                                = 所有持久数据.常规表空间.  状态             

【DB2 学习】在复原过程中重定义表空间

      在备份数据库的时候,备份的表空间使用的所有表空间容器都将保存在一个记录中.在复原过程中,备份中列出的所有表空间将被检查是否可以访问.如果因为其他的一些原因有一个或多个容器不可使用,复原将失败.解决办法是在复原过程中重新定向表空间容器.包括了添加,修改,删除表空间的容器.         另外一种情况是在备份中所选列的容器在系统中并不存在,但用户仍然需要在这些容器中复原.比如在备份之外的地方进行恢复,新的系统中可能没有定义所需的容器 .解决办法:在复原时重定向表空间容器到另外一个支持的