天极传媒:
天极网
比特网
IT专家网
52PK游戏网
极客修
全国分站

北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆合肥惠州青岛郑州泰州厦门淄博天津无锡哈尔滨

产品
  • 网页
  • 产品
  • 图片
  • 报价
  • 下载
全高清投影机 净化器 4K电视曲面电视小家电滚筒洗衣机
您现在的位置: 天极网 > 开发>技术文档>DB2表空间理论基础:表空间的管理

DB2表空间理论基础:表空间的管理方式

天极网开发频道 2012-01-09 10:30 我要吐槽

  在DB2 V9版本中表空间的管理方式有系统管理表空间(SMS),数据库管理表空间(DMS)和自动存储管理,下面就以表空间的管理方式来介绍DB2的表空间。

  系统管理空间概述

  在SMS(系统管理空间)表空间中,操作系统文件系统管理器分配和管理用于存储表的空间。该存储模型通常由存储在文件系统空间中的多个文件组成,这些文件表示表对象。用户决定文件的位置、DB2 数据库 Linux 版、UNIX 版和 Windows 版控制它们的名称,而文件系统负责管理它们。通过控制写入每个文件的数据量,数据库管理器均匀地将数据分布到所有表空间容器中。

  每个表至少有一个与它相关的 SMS 物理文件。

  表空间中的数据按系统中所有容器上的扩展数据块进行条带分割。扩展数据块是对数据库定义的一组连续页。文件扩展名表示该文件中存储的数据的类型。为了在表空间中的所有容器上平均分布数据,表的起始扩展数据块以循环方式分布在所有容器上。如果数据库中包含许多容量较小的表,那么这种扩展数据块分布特别重要。将数据写入多个容器时,建议执行 DB2 条带分割。

  在 SMS 表空间中,表的空间大小是按需分配的。分配的空间量取决于multipage_alloc数据库配置参数的设置。如果将此配置参数设置为YES,那么需要空间时将分配完整的扩展数据块(通常包含两页或更多页)。否则,一次分配的空间将为一页。

  缺省情况下,启用了多页文件分配功能。multipage_alloc 数据库配置参数值将指示是否已启用多页文件分配功能。

  注: 多页文件分配功能不适用于临时表空间。多页文件分配将只影响一个表的数据和索引部分。这意味着 .LF、.LB 和 .LBA 文件并不会一次扩展一个扩展数据块。

  系统管理空间设计

  SMS 表空间是使用 CREATE DATABASE 命令上或 CREATE TABLESPACE 语句上的 MANAGED BY SYSTEM 选项定义的。当设计SMS表空间时,必须考虑两个关键要素:

  表空间的容器:必须指定要用于表空间的容器数。标识要使用的所有容器是非常重要的,因为您不能在创建了 SMS 表空间之后添加或删除容器。当将单个容器中的所有空间都分配给表时,就认为该表空间“已满”,即使其他容器中还有剩余空间。仅当数据库分区中没有任何容器时,才能向该数据库分区中的 SMS 表空间添加容器。在分区数据库环境中,在将新数据库分区添加至 SMS 表空间的数据库分区组时,可以使用 ALTER TABLESPACE 语句将容器添加至新的数据库分区。

  用于一个 SMS 表空间的每个容器都标识一个绝对或相对目录名。其中每一个目录都可以位于不同的文件系统(物理磁盘)上。表空间的最大大小可以按以下方法估计:

  容器数 * (操作系统支持的最大文件系统大小)

  此公式假定有一个唯一的文件系统映射至每个容器,且每个文件系统都具有最大量的可用空间。实际上,情况可能不是这样,表空间最大大小可能小得多。对于数据库对象的大小也有 SQL 限制,它可能影响表空间的最大大小。

  注: 定义容器时必须很小心。如果容器上已有文件或目录,将返回一个错误(SQL0298N)。

  表空间的扩展数据块大小

  扩展数据块大小只能在创建表空间时指定。因为以后不能更改它,因此为扩展数据块大小选择一个适当的值就很重要。

  创建表空间时,如果不指定扩展数据块大小,数据库管理器将使用缺省扩展数据块大小来创建表空间,该缺省大小由 dft_extent_sz数据库配置参数定义。此配置参数最初是根据创建该数据库时提供的信息设置的。如果未在CREATE DATABASE命令上指定 dft_extent_sz 参数,那么会将缺省扩展数据块大小设置为32。

  要为表空间的容器数和扩展数据块大小选择适当的值,必须了解:

  操作系统对逻辑文件系统的大小施加的限制。

  例如,某些操作系统有 2GB 的限制。因此,如果想要一个 64GB 的表对象,那么在此类型的系统上将需要至少32个容器。

  当创建该表空间时,可以指定位于不同文件系统上的容器,以便增加可以存储在该数据库中的数据量。

  在创建表空间时,DB2为该表空间指定的第一个容器中创建第一个表数据文件(SQL00001.DAT),并允许此文件增大至该扩展数据块大小。当它达到此大小之后,数据库管理器将数据写入下一个容器中的 SQL00001.DAT。此过程会继续,直到所有容器都包含 SQL00001.DAT 文件为止,在那时,数据库管理器会返回至第一个容器。此过程(称为条带分割)会继续在容器目录中运行,直到一个容器装满为止(SQL0289N)或操作系统中不再有空间可分配为止(磁盘已满错误)。条带分割也用于索引(SQLnnnnn.INX)、长型字段(SQLnnnnn.LF)、 LOB(SQLnnnnn.LB 和 SQLnnnnn.LBA)以及XML(SQLnnnnn.XDA)文件。

  注: 只要任何一个容器已满,SMS 表空间就满了。因此,每个容器具有相同容量的可用空间是很重要的。

  为了有助于将数据更加均匀地分布至这些容器中,数据库管理器根据将表标识(以上示例中为 SQL00001.DAT)除以容器数所得的余数来确定首先使用的容器。容器从 0 开始依次编号。

  根据DB2对容器进行循环写入的原则,如果您选择实现磁盘条带分割以及DB2条带分割,那么表空间的扩展数据块大小和磁盘的分割大小应该相同,这样会使性能更加优化。

  下面以目前常见的RAID5为例来加以说明

  在配置RAID时,可以通过存储管理软件指定每块盘的条带(叫做Segment或Strip)。设置了每块盘的条带大小后,就可以计算出一个RAID的条带大小:RAID Strip=Strip*n(Disks)。DB2找表空间的各个容器循环写数据时,是按照Extent大小,当第一个容器写完一个Extent后,到第二个容器继续写,以此类推。如果Extent块大小和RAID条带大小匹配的话,在写数据时只需一次IO就可写到存储,这样性能比较优化。例如:一个包含4d+1p的RAID5阵列,每块磁盘的条带未128kb,则RAID Strip=128KB×4=512KB。如果表空间页大小是16KB,那么可以设置Extent Size=RAID Strip=512KB=512KB/16KB=32页。这样可以在创建表空间时指定Extent的大小。该原则同样适用于DMS表空间

  

分页导航
作者:it168 王玉圆责任编辑:王健楠)
请关注天极网天极新媒体 最酷科技资讯
扫码赢大奖
评论
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
办公软件IT新闻整机