设为首页 加入收藏

TOP

深入理解DB2表空间(Tablespace)(一)
2015-12-15 22:17:58 来源: 作者: 【 】 浏览:9
Tags:深入 理解 DB2 空间 Tablespace

表空间是数据库系统中数据库逻辑结构与操作系统物理结构之间建立映射的重要存储结构,它作为数据库与实际存放数据的容器之间的中间层,用于指明数据库中数据的物理位置。任何数据库的创建都必须显式或隐式的为其指定表空间,且数据库中的所有数据都位于表空间中。


用户可以根据硬件环境以及成本等需求,通过指定建立在不同容器上的表空间来自由选择数据的物理存储位置。同时由于备份和恢复可以在表空间级别执行,用户能够进行更多粒度的备份恢复控制。


理解表空间前先理解容器。


容器(Container)


容器是物理存储设备,可以通过目录名,设备名或文件名进行标识。事实上,这也正是三种容器类型。设备容器(如磁带等)和文件容器被同等看待,通常直接将其理解为数据文件(磁盘存储内部结构中有介绍,数据文件中包含若干Extent。)。系统管理表空间只能使用目录容器,数据库管理表空间只能使用设备容器和文件容器。


容器被分配给某个表空间,单个表空间可以使用多个容器,但容器只能属于一个表空间。容器通常位于本地磁盘上,某些远程网络设备或文件也能作为表空间的容器,但由于网络延迟与可靠性方面的原因,远程容器对数据库安全与性能会造成影响,因此不建议使用远程容器。


DB2数据库系统的表空间有三种管理类型:


系统管理表空间(SMS,System-Managed Space)


举个SMS表空间的简单例子:创建一个以containers1目录为容器的SMS表空间MYSPACE。再创建一张表TEST,其常规数据,索引,大对象均位于MYSPACE表空间中(如果三者指定不同的表空间则表创建会失败,事实上,指定了常规数据的表空间为SMS表空间后,索引和大对象的表空间也就默认了)。表创建完成后,物理磁盘上的数据是这样的:



其中SQL00002.DAT数据文件存放表中的常规数据;SQL00002.DTR数据文件存放由于重组,表连接等产生的临时数据。SQL00002.INX数据文件存放表中的索引。还有LF后缀的存放LONG VARCHAR或LONG VARGRAPHIC数据,LB后缀的存放BLOB,CLOB和DBLOB数据,LBA后缀的存放LB后缀文件的分配和可用空间信息等。另外顺便说下图中的SQLTAG.NAM文件。事实上每一个容器都有一个TAG数据结构用于标识容器属于哪一个实例的哪一个数据库的哪一个表空间。对于DMS表空间的容器,TAG位于第一个Extent内,对于SMS表空间的容器,则是以SQLTAG.NAM文件的形式存在。


使用SMS表空间的每一个表都会在表空间的容器(也就是目录)下对应产生一系列的SQL*.DAT ,SQL*.INX等文件。表和其对应的文件的信息存放在SYSIBM.SYSTABLES这个系统编目表中,每个表对应一个FID(表所在的文件组编号)和TID(表所在的表空间编号),可以使用查询语句进行查询:


Select fid,tid, name from sysibm.systables where name='TEST';




?


数据库管理表空间(DMS,Database-Managed Space)


DMS表空间由数据库管理系统(DBMS)自己管理控制,本质上讲,这种类型的表空间是为了最大程度满足数据库管理器的需要而设计并实现的一种特定目的的文件系统。DMS表空间是由有限数量的容器所组成的,DMS表空间可以使用的容器有设备容器和文件容器,这些容器的空间都是预先分配的且不允许修改大小的,但是与SMS表空间不同的是,DMS表空间允许添加容器。也就是说,SMS表空间和DMS表空间分别通过扩大容器大小和增加容器数量的方式实现表空间大小的增加。DMS表空间创建时需要手动指定一个或多个容器。以文件为容器的表空间创建完以后就是一个单独的文件。使用DMS表空间的表的数据可以分开存储,即为常规数据,索引和大对象数据指定不同的DMS表空间。


DMS自动存储表空间(Automatic Storage DMS


自动存储表空间不是真正意义上的独立类型的表空间。它是DMS存储的另外一种处理方法。DMS需要很多的维护操作,而自动存储器则是作为一种简化的空间管理手段,能够自动进行表空间的管理维护,它是DB2 V8.8.2中引入的概念,目前取代SMS成为默认的表空间类型。


三种表空间的对比


三种表空间在各方面的区别是非常多的,下表显示了一些主要的区别:




除了使用 SMS 表空间可以简化管理之外,SMS和DMS存储模型之间最显著的差异是表空间的最大大小。在使用 SMS 时,DBA 最多只能在表空间中放 64GB 的数据。将页面大小改为 32K,可以将这个限制扩大到 512GB,但代价是每个页面上的可用空间可能会更少。改为 DMS 模型会将表空间限制扩大到 2TB(4K 页面大小的情况下)。如果将页面大小改为 32K,可用空间可以增长到 16TB。尽管还有让表大小突破 64GB 限制的其他方法,但是最简单的方法可能是一开始就使用 DMS 表空间。(为什么会有这些限制后面介绍)


DMS与自动存储DMS


那么DMS和自动存储哪种方式更佳呢?自动存储允许 DBA 为数据库设置在创建所有表空间容器时可以使用的存储路径。DBA 不必显式地定义表空间的位置和大小,系统将自动地分配表空间。在 DB2 9 中,数据库在创建时将启用自动存储,除非 DBA 显式地覆盖这个设置。?
启用自动存储的数据库有一个或多个相关联的存储路径。表空间可以定义为 “由自动存储进行管理”,它的容器由 DB2 根据这些存储路径进行分配。数据库只能在创建时启用自动存储。对于在最初没有启用自动存储的数据库,不能在以后启用这个特性。同样,对于在最初启用了自动存储的数据库,也不能在以后禁用这个特性。?
下面的表总结了管理非自动存储和自动存储之间的一些差异。




引入自动存储模型的主要目的是简化 DMS 表空间的管理,同时保持其性能特征。有的时候 DBA 必须定义使用的表空间的所有特征,但是许多应用程序都会从自动存储提供的简化管理获益。


上述是按照管理方式的不同对数据库表空间类型进行了划分,事实上,根据用途的不同,表空间也可以划分为五种类型:


系统表空间(SYSCATSPACE)


系统表空间又称为系统编目表空间,DB2系统编目表是DB2数据库保存所有DB2对象元数据的地方,在Oracle数据库中,被称为数据字典。而系统编目表就存放在系统表空间中。系统表空间是数据库创建时自动创建的,且每个数据库必须有且仅有一个系统表空间,系统表空间被强制命名为SYSCATSPACE。系统表空间默认是SMS表空间,也可以显式指定为DMS表空间。


系统工具表空间(SYSTOOLSPACE)


系统工具表空间是供DB2管理工具和SQL管理例程使用的特定表空间,系统工具表空间不能被显式创建,只有第一次使用下面任一工具或过程时才会自动创建:ADMIN_COPY_SCHEMA 过程 ,ADMIN_DROP_SCHEMA 过程, 管理任务调度程序, 改变表笔记本, ALTOBJ 过程, 自动重组(包括 db.tb_reorg_req 运行状况指示器), 自动收集统计信息(包括 db.tb_runstats_req 运行状况指示器), 配置自动维护向导, db2look 命令, 设计顾问程序, GET_DBSIZE_INFO 过程, 存储管理工具,SYSINSTALLOBJECTS 过程。其中管理任务调度程序、ADMIN_COPY_SCHEMA 和 ADMIN_D

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇IBM Data Studio使用----对象创建.. 下一篇Oracle数据库rman备份计划及恢复

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: