DB2 表空间之SMS、DMS
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相关推荐
- DB2表空间操作详解
在DB2中表空间的存储方式有两种,SMS(System Managed Space)和DMS(Database Managed Space). SMS直接利用操作系统的文件系统来管理数据.表空间中的数 ...
- 如何实现DB2表空间扩容
DB2数据库中的表空间应该如何扩容呢?这是很多人都提到过的问题,下文对DB2表空间扩容方法作了详尽的阐述,供您参考. DB2表空间扩容是我们在使用DB2数据库中的常见操作,下面就为您详细介绍几种DB2 ...
- linux 扩充db2表空间,如何扩充db2的表空间、加容器等表空间维护操作
db2 "alter tablespace GJDATA resize (FILE '/backup/GJDATA32K' 45G)" db2 "alter tables ...
- linux db2表空间目录,db2 表空间的一些知识
表空间有四种类型:常规表空间(Regular Tablespace).大对象表空间(Large Tablespace).系统临时表空间(System Temporary Tablespace)和用户临 ...
- DB2表空间状态列表
0x0 Norma 正常 0x1 Quiesced: SHARE 静止态共享 0x2 Quiesced: UPDATE 静止态更新 0x4 Quiesced: EXCLUSIVE 静止态排它 0x8 ...
- DB2表空间状态代码解释
0x0 Norma 正常 0x1 Quiesced: SHARE 静止态共享 0x2 Quiesced: UPDATE 静止态更新 0x4 Quiesced: EXCLUSIVE 静止态排它 0x8 ...
- db2表空间文件系统满SQL0968C
测试环境遇到这个问题,原理暂时没懂,记录下解决方法: C:\Program Files (x86)\IBM\SQLLIB\BIN>db2 ? SQL0968C 文件系统已满. 说明: 包含数据库 ...
- db2 处理linux时间戳,如何获取DB2表空间前滚操作所需的最小恢复时间戳记
产品:DB2 UDB 平台:跨平台 版本:V8.2,V8.3 本文提供了获取 DB2 数据库表空间前滚恢复操作的所要求最小恢复时间戳记的三种方法. 对于启用了前滚恢复方式(使用归档日志模式)的 DB2 ...
- linux查看db2表空间大小,DB2 查看表空间的容器情况
1,先获取表空间的表空间标识 db2 => list tablespaces show detail 当前数据库的表空间 表空间标识 = 0 名 ...
最新文章
- TCP/IP五层参考模型及其对应设备--运维笔记
- web页面屏蔽鼠标右键
- ubuntu 12.04 LTS u盘安装
- 一文搞懂JVM架构和运行时数据区,全网最新
- 开发过程中编写的一些批处理
- java计算器流程图_帮帮忙:Java小计算器代码,及需求分析.流程图.
- 如何忽略SVN目录?
- 基于 Electron 做视频会议的两种实现方式
- 【学习】在Windows10平台使用Docker ToolBox安装docker(一)
- Manjaro linux驱动HP1020 plus打印机折腾记
- [译] APT分析报告:07.拉撒路(Lazarus)使用的两款恶意软件分析
- 黑客组织Anonymous(匿名者)
- 基于python的微信公众号开发教程_基于python的微信公众号开发教程
- maya导入arnold代理ass文件后,无法修改ass内贴图路径问题的解决方法
- python — 生成器、推导式、递归
- 用c设计一个函数 输入一段股票价格数据 使用均线算法返回一个值来表示股票未来涨跌趋势...
- Acwing算法基础【1】基础(三)前缀和与差分
- 老码识途读书笔记 1
- 针对千禧一代,品牌推广的5种内容营销策略
- 1.Open3D教程——Open3D介绍