SMS 表空间

简介

系统管理的空间(System Managed Space,SMS)表空间使用操作系统所提供的文件系统管理器来分配和管理表的存储空间。在 SMS 表空间内,每个容器都是一个操作系统目录,而表对象被创建成这个目录中的文件。创建 SMS 表空间时,用户必须指定每个容器的目录名。通过对每个对象使用唯一的文件名,DB2 将在表空间中所使用的目录内创建表。

如果在多个容器中创建一个表空间,那么 DB2 将均衡写入到各个容器的数据量。由于一旦创建了 SMS 表空间,就不能动态地将容器添加到 SMS 表空间中,因此在创建该表空间时要了解该表空间的大小需求并创建所有必需的容器,这一点很重要。

回页首

SMS 表空间特征

对于 SMS 表空间:

  • 所有表数据和索引都共享同一个表空间。
  • 表空间中的每张表都有其自己的文件名,可由所有容器使用。文件扩展名表示存储在文件中的数据类型。
  • 文件大小有可能动态增长,其大小上限由容器数量、操作系统在文件系统大小方面的限制以及操作系统在单个文件大小方面的限制所决定。
  • 当单个容器中的所有空间都已分配之后,就认为该表空间已满,即使其它容器中还有剩余空间。
  • 只可以将新容器添加到还没有任何容器的分区上的 SMS 中。
  • 在 Linux 或 UNIX 上,文件系统大小可能会增加。

SMS 表空间非常便于管理,建议将它用作 TEMP 表空间。

回页首

创建 SMS 表空间

要创建 SMS 表空间,请使用下面这个命令:

create table space TS1 managed by system using ('path1', 'path2', 'path3')

在给 SMS 容器指定路径时,该路径可以是某个目录的绝对路径或相对路径。如果目录不存在,DB2 会创建一个。如果目录存在,它不能包含任何文件或子目录。

例如,下面这个命令:

create table space ts1 managed by system using ('D:\DIR1')

指定了目录的绝对路径;因此,如果该目录原本不存在,那么 DB2 将在数据库服务器的 D: 驱动器上创建 DIR1 目录。

下面这条命令:

create tablespace ts2  managed by system using ('DIR1')

指定相对路径 DIR1;因此 DB2 将在数据库主目录下创建 DIR1 目录。

以下 SQL 语句用三个容器在三个不同的驱动器或文件系统上创建了一个 SMS 表空间。请注意,表空间名是相同的,下列示例显示了 UNIX/Linux 和 Windows 表空间定义的差别:

create tablespace smstbspc managed by system using ('d:\tbspc1', 'e:\tbspc2', 'f:\ tbspc3')
create tablespace smstbspc managed by system using ('/dbase/container1', '/dbase/container2', '/dbase/container3')

回页首

改变 SMS 表空间

改变(alter)SMS 表空间只能用来更改预取(prefetch)大小。不能使用 alter 命令将容器添加到 SMS 表空间中。 但是,可以在重定向恢复期间重新定义、添加或除去容器。

回页首

启用多页文件分配

在 SMS 表空间中,缺省情况下对象增大时,对象文件每次扩展一页。 将大量行插入到表中时,这可能会产生大量 I/O,这会对数据库性能造成负面影响。db2empfa 工具使 DB2 能一次给对象文件分配或扩展一个完整的扩展块。 这个工具可以在数据库级上启用;当它运行时,DB2 将分配空白页以填满指定数据库内所有 SMS 表空间容器中的最后一个扩展块。

注:一旦运行了 db2empfa 工具,就不能撤销它的操作结果。

DMS 表空间

简介

使用数据库管理的空间(Database Managed Space,DMS)表空间时,数据库管理器控制着表空间内的存储分配。在 DMS 表空间内,容器可以是操作系统文件、裸逻辑卷或裸磁盘分区。有了 DMS 表空间,创建该表空间时就预先分配空间。创建 DMS 表空间时,用户必须指定文件、逻辑卷或磁盘分区的名称以及(一个或多个)容器的大小。

回页首

DMS 特征

对于 DMS 表空间:

  • 空间是在创建该表空间时分配的。
  • 可以使用 alter tablespace 命令添加或删除表空间容器。
  • 添加或删除容器时,会自动并异步地重新均衡数据。
  • 可以动态扩展、减少容器的数目或调整其大小。
  • 表空间容量只受物理存储器限制。
  • 文件系统 I/O 用于 DMS 文件操作。
  • 直接 I/O 用于 DMS 原始操作。

DMS 表空间考虑到了可能的最高性能,对于 OLTP 尤其如此。它们还允许进行最灵活的数据放置,因为您可以将表对象(也就是,数据、索引、长型 varchar/LOB 数据)分割到不同的表空间中。

回页首

使用设备容器创建 DMS 表空间

在 Linux 和 UNIX 中,设备容器被映射到底层逻辑卷。在 Windows 中,设备容器被映射到未格式化的磁盘分区。创建了容器的设备不能用于其它任何用途,换句话说,它不能包含任何文件系统,并且不应当被格式化。指定容器的大小时,请确保使用了设备上的所有空间,因为任何未用的空间都不能用于其它任何用途。但是,如果今后要扩展表空间容器或调整表空间容器的大小,那么还可以使用该空间。可以用页数、KB、MB 或 GB 指定容器的大小。

下面是一些创建 DMS 表空间的命令示例:

create tablespace mytbspc managed by database using (device '/dev/rmydisk1' 10000)
create tablespace mytbspc managed by database using (device '\\.\G:' 10000)
create tablespace mytbspc managed by database using (device '/dev/rmydisk1' 100M)
create tablespace mytbspc managed by database using (device '\\.\G:' 100M)

回页首

用文件容器创建 DMS 表空间

DB2 还可以使用用于 DMS 容器的文件。指定一个文件时,DB2 将给该文件预先分配指定的大小。对于 DMS 文件,您可以在同一个文件系统或底层卷上拥有容器,这与设备容器不同。

可以用页数、KB、MB 或 GB 指定容器的大小。

更多的一些命令示例:

create tablespace mytbspc managed by database using (file '/dbfiles/ts1c1' 10000)
create tablespace mytbspc managed by database using (file 'G:\dbfiles\ts1c1' 10000)
create tablespace mytbspc managed by database using (file '/dbfiles/ts1c1' 100M)
create tablespace mytbspc managed by database using (file 'G:\dbfiles\ts1c1' 100M)

回页首

改变 DMS 表空间

对于 DMS 表空间,alter database 命令可以用于:

  • 添加容器
  • 删除容器
  • 扩展容器
  • 调整容器的大小,使之更大或更小
  • 更改预取大小

回页首

SMS vs. DMS

下面的图表比较了 SMS 和 DMS 的优点:

DB2 表空间之SMS、DMS相关推荐

  1. DB2表空间操作详解

    在DB2中表空间的存储方式有两种,SMS(System Managed Space)和DMS(Database Managed Space). SMS直接利用操作系统的文件系统来管理数据.表空间中的数 ...

  2. 如何实现DB2表空间扩容

    DB2数据库中的表空间应该如何扩容呢?这是很多人都提到过的问题,下文对DB2表空间扩容方法作了详尽的阐述,供您参考. DB2表空间扩容是我们在使用DB2数据库中的常见操作,下面就为您详细介绍几种DB2 ...

  3. linux 扩充db2表空间,如何扩充db2的表空间、加容器等表空间维护操作

    db2 "alter tablespace GJDATA resize (FILE '/backup/GJDATA32K' 45G)" db2 "alter tables ...

  4. linux db2表空间目录,db2 表空间的一些知识

    表空间有四种类型:常规表空间(Regular Tablespace).大对象表空间(Large Tablespace).系统临时表空间(System Temporary Tablespace)和用户临 ...

  5. DB2表空间状态列表

    0x0 Norma 正常 0x1 Quiesced: SHARE 静止态共享 0x2 Quiesced: UPDATE 静止态更新 0x4 Quiesced: EXCLUSIVE 静止态排它 0x8 ...

  6. DB2表空间状态代码解释

    0x0 Norma 正常 0x1 Quiesced: SHARE 静止态共享 0x2 Quiesced: UPDATE 静止态更新 0x4 Quiesced: EXCLUSIVE 静止态排它 0x8 ...

  7. db2表空间文件系统满SQL0968C

    测试环境遇到这个问题,原理暂时没懂,记录下解决方法: C:\Program Files (x86)\IBM\SQLLIB\BIN>db2 ? SQL0968C 文件系统已满. 说明: 包含数据库 ...

  8. db2 处理linux时间戳,如何获取DB2表空间前滚操作所需的最小恢复时间戳记

    产品:DB2 UDB 平台:跨平台 版本:V8.2,V8.3 本文提供了获取 DB2 数据库表空间前滚恢复操作的所要求最小恢复时间戳记的三种方法. 对于启用了前滚恢复方式(使用归档日志模式)的 DB2 ...

  9. linux查看db2表空间大小,DB2 查看表空间的容器情况

    1,先获取表空间的表空间标识 db2 => list tablespaces show detail 当前数据库的表空间 表空间标识                          = 0 名 ...

最新文章

  1. 运维监控系统——使用API在zabbix监控系统中查看,创建及删除监控主机
  2. 关于CRTP(Curiously Recurring Template Prattern)的使用
  3. BufferedInputStream
  4. 逆推继承看原型 函数的角色 函数声明和函数表达式的区别 函数中this指向的问题
  5. 反写规则-销售订单关闭后不允许出库 (销售订单-销售出库单)
  6. 临近年关,修复ASP.NET Core因浏览器内核版本引发的单点登录故障
  7. pat00-自测5. Shuffling Machine (20)
  8. sscanf的高级用法
  9. android布局的一些知识
  10. (38)VHDL实现主从JK触发器
  11. 深度学习入门笔记(六):误差反向传播算法
  12. Maven 缺省内置变量
  13. 休闲娱乐游戏-贱鸟跳跳
  14. android禁止下拉状态栏
  15. 基于蚁群算法求解求解TSP问题(JAVA)
  16. 财务人员必备的5个Excel技能,学会工资高出同事3倍!
  17. 很好用的绘图软件cad,非常喜欢这个简易方法
  18. 【单片机】数码管显示器仿真
  19. JetBrains Rider如何更改前进 后退 快捷键,并加到工具栏(图文详情)
  20. 版权微talk | 两部门发文,拟出台相关方案,全面加强知识产权保护

热门文章

  1. 修改matlab 生成exe的图标,更改matlab生成exe文件的图标
  2. 人工智能原理与技术 第1章 作业
  3. 40条让人误会的短信
  4. 【软件架构】七款代码味道识别工具
  5. 游戏开发教程cocos2d-x移植之一
  6. div标签以及网页设计中的一些知识点
  7. linux pureftpd 卸载,lnmp卸载pureftpd服务简单命令
  8. 什么是DOM?你了解DOM树吗?
  9. trello_从Gmail侧边栏快速添加Trello卡
  10. 深入理解CSS中的行高