DB2基础学习七 DB2表空间结构
时间:2010-04-07
来源:互联网
前面从宏观外部特征对DB2进行了学习从本章开始,我们学习DB2的内部特性,先来了解下DB2的逻辑和物理结构。
数据库的逻辑、物理和性能特性
DB2 数据库实际上由一个对象集合组成。从用户的角度来看,数据库是一组通常以某种方式相关联的表。
从数据库管理员(DBA,也就是您)的角度来看,数据库比这要复杂一点儿。实际的数据库包含许多物理对象和逻辑对象:
我们 应该首先关注数据库的物理实现,而不是直接研究所有可能的参数和对象组合,那么如何创建数据库并分配它所需的磁盘存储空间呢?要正确地回答这个问题,需要了解数据库中的基本对象以及它们如何映射到物理磁盘存储,下面学习下DB2的存储模型。
DB2 存储模型
DB2 利用一个逻辑存储模型和一个物理存储模型来处理数据。用户操作的实际数据放在表 中。表由行和列组成,用户并不知道数据的物理表示。这一事实有时候称为数据的物理独立性。
表本身放在表空间 中。表空间作为数据库与包含实际表数据的容器对象之间的一层。表空间可以包含多个表。
容器 是一个物理存储设备。它可以由目录名、设备名或文件名标识。容器被分配给表空间。表空间可以跨许多容器,这意味着可以突破操作系统对于一个容器可以包含的数据量的限制。
表、索引、长字段和表空间
表、索引和长字段(有时候称为二进制大对象,BLOB)是在 DB2 数据库中创建的对象。这些对象映射到表空间,表空间本身映射到物理磁盘存储。
表是数据记录的无序集合。它由列和行组成,行常常也称为记录。表可以是持久的表(基表)、临时的(声明)表或临时的(派生)表。从 DBA 的角度来看,空间都会分配给这些表对象,但是是在不同的表空间中。
索引 是与一个表相关联的物理对象。索引用来在表中实施惟一性(也就是说,确保没有重复的值)以及改进检索信息时的性能。运行 SQL(结构化查询语言)语句并不需要索引;但是,如果创建索引来提高查询处理的速度,您的用户会因此受益!
长字段(即 BLOB)是表中的一种数据类型。这种数据类型通常由非结构化数据(图像、文档、音频文件)组成,常常包含大量的信息。如果在表中存储这种类型的数据,就会在删除、插入和操作这些对象时导致过大的开销。所以并不是将它们直接放在表的行中,而是存储一个指针,这个指针链接到一个 Large 表空间(以前称为 Long Field 表空间)。DBA 需要了解这种数据类型,从而创建适当的表空间来包含这些对象。
另一种特殊的数据类型是 XML(eXtensible Markup Language,可扩展标记语言)。XML 这种数据类型可以存储在行中,也可以存储在与 BLOB 对象相似的单独的表空间中。XML 数据类型的独特之处在于,它可以跨一个表中的多个页面,而其他数据类型必须放在与行相同的页面中。DBA 需要利用应用程序设计器来决定表中存储的 XML 对象应该放在常规(数据)页面中,还是放在自己的单独的表空间中。如果检索性能是重要的因素,DBA 应该使用比较大的页面大小并将 XML 列放在与常规数据相同的表空间中。
DMS 和 SMS 表空间
表空间是数据库与这个数据库中存储的表之间的逻辑层。表空间在数据库中创建,表在表空间中创建。DB2 支持三种表空间:
DMS、SMS 与自动存储各自特性如下,
尽管下面的表并不全面,但是它包含在 DMS、自动存储和 SMS 表空间之间进行选择时要考虑的一些因素。
除了使用 SMS 表空间可以简化管理之外,这两种存储模型之间最显著的差异是表空间的最大大小。在使用 SMS 时,DBA 最多只能在表空间中放 64GB 的数据。将页面大小改为 32K,可以将这个限制扩大到 512GB,但代价是每个页面上的可用空间可能会更少。改为 DMS 模型会将表空间限制扩大到 2TB(4K 页面大小的情况下)。如果将页面大小改为 32K,可用空间可以增长到 16TB。尽管还有让表大小突破 64GB 限制的其他方法,但是最简单的方法可能是一开始就使用 DMS 表空间。
DMS 与自动存储
那么DMS和自动存储哪种方式更佳呢?自动存储允许 DBA 为数据库设置在创建所有表空间容器时可以使用的存储路径。DBA 不必显式地定义表空间的位置和大小,系统将自动地分配表空间。在 DB2 9 中,数据库在创建时将启用自动存储,除非 DBA 显式地覆盖这个设置。
启用自动存储的数据库有一个或多个相关联的存储路径。表空间可以定义为 “由自动存储进行管理”,它的容器由 DB2 根据这些存储路径进行分配。数据库只能在创建时启用自动存储。对于在最初没有启用自动存储的数据库,不能在以后启用这个特性。同样,对于在最初启用了自动存储的数据库,也不能在以后禁用这个特性。
下面的表总结了管理非自动存储和自动存储之间的一些差异。
引入自动存储模型的主要目的是简化 DMS 表空间的管理,同时保持其性能特征。有的时候 DBA 必须定义使用的表空间的所有特征,但是许多应用程序都会从自动存储提供的简化管理获益。
以上我们对表空间的结构概念进行了学习,那么如何创建表空间呢,在下节将学习缓冲池相关概念学习后将继续对其操作方法详细讨论。
[ 本帖最后由 marvelyu 于 2010-4-7 20:57 编辑 ]
数据库的逻辑、物理和性能特性
DB2 数据库实际上由一个对象集合组成。从用户的角度来看,数据库是一组通常以某种方式相关联的表。
从数据库管理员(DBA,也就是您)的角度来看,数据库比这要复杂一点儿。实际的数据库包含许多物理对象和逻辑对象:
- 表、视图、索引、模式
- 锁、触发器、存储过程、包
- 缓冲池、日志文件、表空间
我们 应该首先关注数据库的物理实现,而不是直接研究所有可能的参数和对象组合,那么如何创建数据库并分配它所需的磁盘存储空间呢?要正确地回答这个问题,需要了解数据库中的基本对象以及它们如何映射到物理磁盘存储,下面学习下DB2的存储模型。
DB2 存储模型
DB2 利用一个逻辑存储模型和一个物理存储模型来处理数据。用户操作的实际数据放在表 中。表由行和列组成,用户并不知道数据的物理表示。这一事实有时候称为数据的物理独立性。
表本身放在表空间 中。表空间作为数据库与包含实际表数据的容器对象之间的一层。表空间可以包含多个表。
容器 是一个物理存储设备。它可以由目录名、设备名或文件名标识。容器被分配给表空间。表空间可以跨许多容器,这意味着可以突破操作系统对于一个容器可以包含的数据量的限制。
表、索引、长字段和表空间
表、索引和长字段(有时候称为二进制大对象,BLOB)是在 DB2 数据库中创建的对象。这些对象映射到表空间,表空间本身映射到物理磁盘存储。
表是数据记录的无序集合。它由列和行组成,行常常也称为记录。表可以是持久的表(基表)、临时的(声明)表或临时的(派生)表。从 DBA 的角度来看,空间都会分配给这些表对象,但是是在不同的表空间中。
索引 是与一个表相关联的物理对象。索引用来在表中实施惟一性(也就是说,确保没有重复的值)以及改进检索信息时的性能。运行 SQL(结构化查询语言)语句并不需要索引;但是,如果创建索引来提高查询处理的速度,您的用户会因此受益!
长字段(即 BLOB)是表中的一种数据类型。这种数据类型通常由非结构化数据(图像、文档、音频文件)组成,常常包含大量的信息。如果在表中存储这种类型的数据,就会在删除、插入和操作这些对象时导致过大的开销。所以并不是将它们直接放在表的行中,而是存储一个指针,这个指针链接到一个 Large 表空间(以前称为 Long Field 表空间)。DBA 需要了解这种数据类型,从而创建适当的表空间来包含这些对象。
另一种特殊的数据类型是 XML(eXtensible Markup Language,可扩展标记语言)。XML 这种数据类型可以存储在行中,也可以存储在与 BLOB 对象相似的单独的表空间中。XML 数据类型的独特之处在于,它可以跨一个表中的多个页面,而其他数据类型必须放在与行相同的页面中。DBA 需要利用应用程序设计器来决定表中存储的 XML 对象应该放在常规(数据)页面中,还是放在自己的单独的表空间中。如果检索性能是重要的因素,DBA 应该使用比较大的页面大小并将 XML 列放在与常规数据相同的表空间中。
DMS 和 SMS 表空间
表空间是数据库与这个数据库中存储的表之间的逻辑层。表空间在数据库中创建,表在表空间中创建。DB2 支持三种表空间:
- 系统管理的空间(System-Managed Space,SMS):在这里,由操作系统的文件系统管理器分配和管理空间。在 DB2 9 之前,如果不带任何参数创建数据库或表空间,就会导致所有表空间作为 SMS 对象创建。
- 数据库管理的空间(Database-Managed Space,DMS):在这里,由数据库管理程序控制存储空间。这种表空间本质上是一种特殊用途的文件系统实现,可以最好地满足数据库管理程序的需要。
- DMS 的自动存储(Automatic Storage With DMS):自动存储实际上不是一种单独的表空间类型,而是一种处理 DMS 存储的不同方式。DMS 容器需要比较多的维护(见后面的一节),在 DB2 V8.2.2 中引入了自动存储,作为简化空间管理的方式。
DMS、SMS 与自动存储各自特性如下,
尽管下面的表并不全面,但是它包含在 DMS、自动存储和 SMS 表空间之间进行选择时要考虑的一些因素。
特性 | SMS | DMS | 自动存储 |
是否分段(Striping)? | 是 | 是 | 是 |
默认类型 | Version 8 | 无 | Version 9 |
对象管理 | 操作系统 | DB2 | DB2 |
空间分配 | 按需增长/收缩 | 预先分配;大小可以收缩和增长,但是需要 DBA 干预。 | 预先分配;可以自动增长。 |
管理的简便性 | 最好;很少需要调优,甚至不需要 | 好,但是需要一些调优(例如, EXTENTSIZE PREFETCHSIZE) | 最好;很少需要调优,甚至不需要 |
性能 | 非常好 | 最好;可通过利用原始容器多获得 5% 到 10% 的收益 | 最好;但是,可以不使用原始容器 |
表空间最大大小 | 64GB(4K 页面) | 2TB(4K 页面) | 2TB(4K 页面) |
除了使用 SMS 表空间可以简化管理之外,这两种存储模型之间最显著的差异是表空间的最大大小。在使用 SMS 时,DBA 最多只能在表空间中放 64GB 的数据。将页面大小改为 32K,可以将这个限制扩大到 512GB,但代价是每个页面上的可用空间可能会更少。改为 DMS 模型会将表空间限制扩大到 2TB(4K 页面大小的情况下)。如果将页面大小改为 32K,可用空间可以增长到 16TB。尽管还有让表大小突破 64GB 限制的其他方法,但是最简单的方法可能是一开始就使用 DMS 表空间。
DMS 与自动存储
那么DMS和自动存储哪种方式更佳呢?自动存储允许 DBA 为数据库设置在创建所有表空间容器时可以使用的存储路径。DBA 不必显式地定义表空间的位置和大小,系统将自动地分配表空间。在 DB2 9 中,数据库在创建时将启用自动存储,除非 DBA 显式地覆盖这个设置。
启用自动存储的数据库有一个或多个相关联的存储路径。表空间可以定义为 “由自动存储进行管理”,它的容器由 DB2 根据这些存储路径进行分配。数据库只能在创建时启用自动存储。对于在最初没有启用自动存储的数据库,不能在以后启用这个特性。同样,对于在最初启用了自动存储的数据库,也不能在以后禁用这个特性。
下面的表总结了管理非自动存储和自动存储之间的一些差异。
特性 | 非自动存储 | 自动存储 |
容器的创建 | 必须在创建表空间时显式地提供容器。 | 不能在创建表空间时提供容器;它们将由 DB2 自动地分配。 |
容器大小的调整 | 在默认情况下,表空间大小的自动调整是关闭的(AUTORESIZE NO)。 | 在默认情况下,表空间大小的自动调整是打开的(AUTORESIZE YES)。 |
初始大小 | 不能使用 INITIALSIZE 子句指定表空间的初始大小。 | 使用 INITIALSIZE 子句指定表空间的初始大小。 |
容器的修改 | 可以使用 ALTER TABLESPACE 语句(ADD、DROP、BEGIN NEW STRIPE SET 等等)执行容器操作。 | 不能执行容器操作,因为由 DB2 控制空间管理。 |
管理的简便性 | 可以使用重定向的恢复操作重新定义与表空间相关联的容器。 | 不能使用重定向的恢复操作重新定义与表空间相关联的容器,因为由 DB2 控制空间管理。 |
引入自动存储模型的主要目的是简化 DMS 表空间的管理,同时保持其性能特征。有的时候 DBA 必须定义使用的表空间的所有特征,但是许多应用程序都会从自动存储提供的简化管理获益。
以上我们对表空间的结构概念进行了学习,那么如何创建表空间呢,在下节将学习缓冲池相关概念学习后将继续对其操作方法详细讨论。
[ 本帖最后由 marvelyu 于 2010-4-7 20:57 编辑 ]
作者: marvelyu 发布时间: 2010-04-07
回忆下

作者: marvelyu 发布时间: 2010-07-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28