本文专为 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;根据操作系统约定分配空间;如有必要就自动扩展表空间.... 下一页