DB2 的表空间和缓冲池
对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑。在本
文中,我们将讨论 DBA 要做出重要选择的两个方面:表空间和缓冲池。表空间和缓冲池的设计和调优会
对 DB2 服务器的性能产生深远的影响,因此我们将着重讨论这些活动。
表空间
数据库中的所有数据都存储在许多表空间中。可以认为表空间是孩子而数据库是其父母,其中表空间(孩
子)不能有多个数据库(父母)。由于表空间有不同用途,因此根据它们的用途和管理方式将它们分类。
根据用途有五种不同的表空间:
目录表空间
每个数据库只有一个目录表空间,它是在发出 CREATE DATABASE 命令时创建的。
目录表空间被 DB2 命名为 SYSCATSPACE,它保存了系统目录表。总是在创建数据
库时创建该表空间。
常规表空间
常规表空间保存表数据和索引。它还可以保存诸如大对象(Large Object,LOB)之类
的长数据,除非这些数据显式地存储在长表空间中。如果某些表空间是数据库管理的空
间(Database Managed Space,DMS),则可以将表及其索引分别放到单独的常规表
空间中。我们将在本文后面定义 DMS 和系统管理的空间(System Managed
Space,SMS)之间的区别。每个数据库中必须至少有一个常规表空间。创建数据库时
指定该表空间的缺省名为 USERSPACE1。
长表空间
长表空间用于存储长型或 LOB 表列,它们必须驻留在 DMS 表空间中。它们还可以存
储结构化类型的列或索引数据。如果没有定义长表空间,那么将把 LOB 存储在常规表
空间中。长表空间是可选的,缺省情况下一个都不创建。
系统临时表空间
系统临时表空间用于存储 SQL 操作(比如排序、重组表、创建索引和连接表)期间所
需的内部临时数据。每个数据库必须至少有一个系统临时表空间。随数据库创建的系统
临时表空间的缺省名为 TEMPSPACE1。
用户临时表空间
用户临时表空间存储已声明的全局临时表。创建数据库时不存在用户临时表空间。至少
应当创建一个用户临时表空间以允许定义已声明的临时表。用户临时表空间是可选的,
缺省情况下一个都不创建。
表空间管理
可以用两种不同的方式管理表空间:
系统管理的空间(SMS)
SMS 表空间由操作系统进行管理。容器被定义成常规操作系统文件,并且是通过操作
系统调用访问的。这意味着所有的常规操作系统功能将处理以下内容:操作系统将缓冲