跟屌丝一起学习 DB2 第三课 创建表空间

缓冲池(bufferpool) 是一个内存块的集合,这些内存块采用页面的形式。在首次创建数据库时,同时创建了一个默认的缓冲池 IBMDEFAULTBP。可以在创建表空间时,或者在 Buffer Pools 视图中使用 Create New Bufferpool 向导,创建新的缓冲池。

  缓冲池最重要的作用是,在数据库读写硬盘上的数据时帮助减少 I/O 开销。这是通过 I/O 预获取和页面清理器实现的。预获取能够减少读取页面的 I/O 开销,其原理是:预先判断特定查询可能需要的页面,然后将这些页面读入缓冲池,因此当查询需要它们时,它们已经准备好了。页面清理器确保将事务不再需要的已经更新的页面首先写到硬盘上,然后从缓冲池中清除它们。这确保缓冲池中有足够的干净空间可以读取页面。

  DB2 支持不同的页面大小:2K、4K、8K、16K 和 32K。IBMDEFAULTBP 使用 4K 的页面大小。如果希望创建采用其他页面大小的表空间,那么首先要确保数据库中有采用这种页面大小的缓冲池。多个表空间可以使用同一个缓冲池。在创建或更改表空间时,可以指定要使用哪个缓冲池。选择和创建适当的缓冲池对于数据库性能很重要。可以根据需要创建新的缓冲池或更改现有的缓冲池。 DB2数据库中的表空间(tablespace) 是一个逻辑层,一些数据库对象(比如表、视图和索引)驻留在这里。一个数据库可以有多个表空间。在首次创建数据库时,DB2 会自动地创建一组表空间。
 在 Control Center 中,展开 HELLOWLD 并点击 Table Spaces。应该会在 Control Center 右边的窗口中看到三个表空间,如图 7 所示:

图 7. Control Center Table Spaces 视图

  

 这些表空间是 DB2 在创建数据库 HWLD 时创建的。SYSCATSPACE 和 TEMPSPACE1 都是系统表空间,不能删除或重新创建它们。SYSCATSPACE 是系统编目表空间,用来存储关于数据库的元信息。TEMPSPACE1 在某些数据库操作期间用来存储临时结果。USERSPACE1 是默认的用户表空间,用来存储表、视图和索引等用户数据。任何具有足够权力的 DB2 用户都可以删除和重新创建 USERSPACE1 或者创建其他用户表空间。

 SMS 或 DMS 表空间

  在创建表空间时,可以选择表空间是 SMS 表空间还是 DMS 表空间。SMS 代表 System Managed Space,DMS 代表 Database Managed Space。在 SMS 表空间中,空间由操作系统的文件系统管理,会根据需要分配空间。SMS 表空间需要的初始设置比较少,管理方面需要考虑的因素少,而且一般更容易创建和使用,因为空间会在需要时自动地分配。在 DMS 表空间中,空间由 DB2 管理。DMS 表空间需要在创建时预先分配空间,所以需要进行比较多的初始设置工作,管理方面也有更多需要考虑的因素。但是,它为用户提供了更大的灵活性,可以更好地控制数据的布局并改进数据访问的性能。在一般情况下,经过良好设计和调优的 DMS 表空间可以提供比相似的 SMS 表空间更好的性能。

 在 Table Spaces 视图中,点击每个表空间。查看在右下方的窗口中显示的详细信息。SYSCATSPACE 和 USERSPACE1 都是 DMS 表空间,TEMPSPACE1 是 SMS 表空间。您还可以创建自己的表空间。

屌丝 已经创建了 自己的表空间 你看 

当然你也可以用命令插入了 插入 插入。。。。。屌丝非常忌讳的词

l 只有sysadm和sysctl的权限才可以创建表空间

l 只有在缓冲池创建或者激活的状态才能使用create tablespace命令

l 缓冲池可以动态的增加、删除和变更

l DFT_PREFETCH_SZ能够优化计算的环境

create                  [LARGE/REGULAR/TEMPORARY]

       TABLESPACE       tablespace

       PAGESIZE integer

       MANAGED BY       [AUTOMATIC STORAGE][SYSTEM/DATABASE]

                        [system-container/database-container]

       EXTENTSIZE [number-of-pages/integer]

       PREFETCHSIZE [number-of-pages/integer]

       BUFFERPOOL bufferpool-name

       OVERHEAD number-of-milliseconds (系统默认)

       TRANSFEBRATE number-of-milliseconds

       ...

       AUTORESIZE YES

       USING (DEVICE 'Container-String' integer K|M|G)

这里是个例子 大家可以联系下 create tabblespace 屌丝 managed by database using (device '/dev/rhdisk0' 10000(页数),device'/dev/rn1hd01' 40G)

注意这里的pagesize 同bufferpool中的pagesize是相同的

 表空间的类型

Create  {large、regular、[system/user] temporary} TABLESAPCE name

 

(1) 常规表空间(REGULAR)

l SMS时默认为regular

l 存储用户数据,如USERSPACE1

(2) 临时表空间

l 系统临时表空间:DB2用来排序

l 用户临时表空间:被用来定义全局临时表空间在内存里

创建用户临时表空间:

  用户临时表空间用来存储已说明的临时表。

CREATE USER TEMPORARY TABLESPACE usr_tbsp

  MANAGED BY DATABASE

  USING (FILE 'd:\db2data\user_tbsp' 5000,

         FILE 'e:\db2data\user_tbsp' 5000)

(3) 大型表空间

l DMS时 默认是LARGE

l 存储多媒体对象或其他大型对象数据

接下来 屌丝大哥 为你介绍表空间缓冲池

缓冲池(bufferpool) 是一个内存块的集合,这些内存块采用页面的形式。在首次创建数据库时,同时创建了一个默认的缓冲池 IBMDEFAULTBP。可以在创建表空间时,或者在 Buffer Pools 视图中使用 Create New Bufferpool 向导,创建新的缓冲池。

  缓冲池最重要的作用是,在数据库读写硬盘上的数据时帮助减少 I/O 开销。这是通过 I/O 预获取和页面清理器实现的。预获取能够减少读取页面的 I/O 开销,其原理是:预先判断特定查询可能需要的页面,然后将这些页面读入缓冲池,因此当查询需要它们时,它们已经准备好了。页面清理器确保将事务不再需要的已经更新的页面首先写到硬盘上,然后从缓冲池中清除它们。这确保缓冲池中有足够的干净空间可以读取页面。

  DB2 支持不同的页面大小:2K、4K、8K、16K 和 32K。IBMDEFAULTBP 使用 4K 的页面大小。如果希望创建采用其他页面大小的表空间,那么首先要确保数据库中有采用这种页面大小的缓冲池。多个表空间可以使用同一个缓冲池。在创建或更改表空间时,可以指定要使用哪个缓冲池。选择和创建适当的缓冲池对于数据库性能很重要。可以根据需要创建新的缓冲池或更改现有的缓冲池。
在 Control Center 中,点击 Buffer Pools。可以看到数据库中的所有缓冲池。选择创建新的缓冲池或更改现有的缓冲池。


看到了么  屌丝大哥 也创建了个缓冲池 是不是很给力??

DB2 系统目录表和视图

  在创建新数据库时,DB2 会在编目表空间中创建多个系统编目表和视图。这些系统编目表和视图用来跟踪数据库管理程序需要知道的关于数据库对象、访问控制信息和工具的重要信息。系统编目视图基于基本系统编目表。用户在一般情况下通过查询系统编目视图来查看感兴趣的系统编目表数据。

  在 Control Center 中,在 All Database 视图下面,展开 HELLOWLD,然后选择 Table Spaces。选择右上窗口中显示的 SYSCATSPACE。可以在右下窗口中看到这个表空间的概况:

Control Center —— Tablespaces 视图

  

  点击 Show Related Objects。会出现一个新页面,其中显示表空间 SYSCATSPACE 中的所有表和索引,以及它们的模式 SYSIBM。点击 Indexes,列出 SYSCATSPACE 中的所有索引。Show SQL 显示用来获得这个表空间中的表或索引列表的 select 命令。

 表、索引、模式和视图都是重要的 DB2 对象,本教程后面都会详细讨论。但是,首先试试手工创建表空间:

  1. 在 Control Center 中点击 Create New Tablespace,启动 Create Table Space 向导。输入 TBSP_DATA1 作为表空间名,在 comment 中输入 DMS tablespace to hold data。
  2. 选择 Regular 来选择要使用的表空间类型并点击 Next。出现 Specify a buffer pool 面板,在这里选择这个表空间要使用的缓冲池。
  3. 使用默认的 IBM 缓冲池,但是也可以使用 Create 按钮创建新的缓冲池。点击 Next。

创建新的表空间 —— 指定缓冲池

  

 4. 这个面板允许指定表空间是由数据库管理(DMS),还是由系统管理(SMS)。选择 Database-managed space (high performance)。点击 Next。Containers 页面出现。

  5. 在 Containers 页面上,可以指定容器的数量。容器(Container) 可以是存储表空间数据的目录、文件或设备。可以为每个表空间创建多个容器,而且在创建表空间之后,可以删除现有的容器或添加更多的容器。点击 Add,Define Container 页面出现,可以在这里为新的表空间定义容器。

  6. 可以为新的表空间定义多个容器。不同的容器可以位于不同的物理节点或路径。按照图 11 所示添加容器,然后点击 OK。

 图 11. 创建新的表空间 —— 添加容器

  

  7. 用相同的操作添加相同路径上的另一个容器 tbsp_data1_c02。

  8. 应该会看到添加的两个容器,见图 12。每个容器的大小是 5MB,总共 10MB。如果对已经定义的容器不满意,那么点击 Change 或 Remove。点击 Next 继续。

  图 12. 创建新的表空间 —— 容器页面

  

  9. 下一个页面帮助您定义这个表空间使用的区间和预获取大小。一个区间(extent)包含一系列连续的页面。页面的数量称为区间的大小。一般来说,希望一次分配多个页面,从而减少空间分配的开销。预获取大小是指在启用预获取时预获取器读取的页面数量。预获取的概念在前面讨论过。选择 Less than 25MB 来改变表的平均大小,建议的区间大小会自动地改为适当的设置。

  10. 点击 Summary 显示 Summary 页面。点击 Show SQL 并将 SQL 保存在 C:\DB2\hellowld\crt_tbsp.clp 中。点击 Finish 让 Create Tablespace 向导完成操作。

  11. 在 Control Center Table Spaces 视图中,应该能够找到新的表空间 TBSP_DATA1。如果对新创建的表空间 TBSP_DATA1 不完全满意,那么点击 Alter Tablespace 来修改这个表空间。如果希望创建 SMS 表空间,那么点击 Create New Tablespace。

  图 13. Control Center —— Tablespace 视图

  

  12. 将索引、大对象(Large Object,LOB)和大字段(Long Field,LF)或 XML 数据与表数据分开存储是有好处的。但是,在本教程中没有 LOB/LF 数据,所以不需要为它们创建表空间。XML 数据存储在与其他数据相同的表空间 TBSP_DATA1 中,所以也不需要为它创建表空间。后面几节将讨论索引。

  13. 在 DB2 命令行上,输入 cd C:\DB2\HELLOWLD\ 来创建表空间。如果目录 HELLOWLD 还不存在,需要首先创建它。然后,运行以下命令 notepad crt_tbsp.clp。在 notepad 中,编辑 Create Tablespace 语句,将它改为以下代码: CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING

  (FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c01' 5120,

  FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c02' 5120)

  EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP;

  14. 将 COMMENT 语句改为: COMMENT ON TABLESPACE TBSP_INDEX1 IS'tablespace to hold index data';

  现在 crt_tbsp.clp 中的命令应该是下面这样:

CONNECT TO HELLOWLD; 

CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING 
(FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c01' 5120, 
FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c02' 5120 ) 
EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP ; 

COMMENT ON TABLESPACE TBSP_INDEX1 IS 'tablespace to hold index data'; 

CONNECT RESET; 

15. 保存并退出 notepad。

  16. 在 DB2 命令行窗口中运行 db2 -tvf crt_tbsp.clp 命令,应该会看到成功地创建了这个表空间。DB2 命令行选项 -tvf 允许运行来自文件的 DB2 命令。

  17. 进入 Control Center,点击 Control Center 主菜单中的 Selected,然后点击下拉菜单中的 Refresh,查看到目前为止创建的所有表空间。

 

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2023-01-17

跟屌丝一起学习 DB2 第三课 创建表空间的相关文章

跟屌丝一起学习 DB2 第五课 存储过程(三) 存储过程实例

客户在进行短信服务这个业务申请时,需要填写一些基本信息,然后根据这些信息判断这个用户是否已经存在于业务系统中.因为网上服务和业务系统两个项目物理隔离,而且网上数据库保存的客户信息不全,所以判断需要把数据交换到业务系统,在业务系统中判断.     解决方式是通过存储过程,以前也了解过存储过程,但没使用到项目中.不过经过一番努力最后还是完成了,期间遇到了一些困难,特写此文让对DB2存储过程还不熟悉的童鞋避免一些无谓的错误.     DROP PROCEDURE "PLName" @CREA

跟屌丝一起学习 DB2 第五课 存储过程(一)

DB2 存储过程 一.什么是存储过程 受 DB2 服务器控制的一段可执行程序 可以通过SQL的CALL语句来完成对存储过程的调用 在存储过程中可以包含业务逻辑 存储过程可以在本地或远程进行调用 存储过程可以接收或传递参数,生成结果集 二.存储过程特征 包含使用sql语句的过程构造 存储在数据库中且在db2 服务器上运行: 可以由正在使用的sql的应用程序根据名称来调用: 允许应用程序分2部分允许,在客户机上运行应用程序,在服务器上运行存储过程 存储过程在应用程序中的优势 减少了客户机与服务器直接

跟屌丝一起学习 DB2 第五课 存储过程(二)

REPEAT语句 ftch_loop2: REPEAT     FETCH  c1  INTO  v_firstname,  v_midinit,  v_lastname; UNTIL  SQLCODE  <>  0  AND  REPEAT  ftch_loop2; WHILE语句 WHILE  at_end  =  0  DO     FETCH  c1  INTO  v_firstname,  v_midinit,  v_lastname;     IF  SQLCODE  =  100

db2 导入-db2导入时报SQL3319N 创建表时发生 SQL 错误 &amp;amp;quot;-286&amp;amp;quot;

问题描述 db2导入时报SQL3319N 创建表时发生 SQL 错误 "-286" E:kelanzjnsWebSitezjbank1227>db2move zjnsWeb import Application code page not determined, using ANSI codepage 1386 ***** DB2MOVE ***** Action: IMPORT Start time: Thu Aug 29 17:29:29 2013 Connecting to

跟屌丝一起学习 DB2 第一课 安装DB2

如果您没有DB2的安装软件,那么您可以到IBM的官方网站上下载免费试用版,唉 苦逼的屌丝 只能用 免费版  你也可以选择Express-C 版本 网址如下:www-900.ibm.com/cn/software/db2/ 或者度娘 自己找 获得的安装文件是一个压缩包: DB2的安装1.解压DB2安装压缩包               解压获得的DB2安装压缩包: 图3 2.安装DB2 V8.2                     双击解压后安装文件目录中的"setup.exe"文件

【DB2学习】查看一个数据的表空间详情

db2 => list tablespaces show detail            当前数据库的表空间  表空间标识                        = 0  名称                       = SYSCATSPACE  类型                                       = 数据库管理空间  内容                                = 所有持久数据.常规表空间.  状态             

oracle手工完全恢复(三) 恢复表空间

案例2: recover tablespace(恢复表空间(删除了tablespace的所有的datafile)) 在关库状态下删除数据文件时,这样恢复:转储datafile,使丢失的datafile脱机, recover tablespace (1)模拟环境 SQL> conn scott/tiger Connected. SQL> col tname for a30 SQL> select * from tab; TNAME                          TABT

DB2基础:表空间和缓冲池

本文专为 IBM DB2 Universal Database for Linux.UNIX 和 Windows 而撰写 简介 对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑.在本文中,我们将讨论 DBA 要做出重要选择的两个方面:表空间和缓冲池.表空间和缓冲池的设计和调优会对 DB2 服务器的性能产生深远的影响,因此我们将着重讨论这些活动. 在我们的示例中,我们将使用 DB2 V8.1 企业服务器版.大多数示例也适用于低级版本.我们会让您知

DB2表空间理论基础(原创)

在DB2 V9版本中表空间的管理方式有系统管理表空间(SMS),数据库管理表空间(DMS)和自动存储管理,下面就以表空间的管理方式来介绍DB2的表空间 系统管理空间概述  在SMS(系统管理空间)表空间中,操作系统的文件系统管理器分配和管理用于存储表的空间.该存储模型通常由存储在文件系统空间中的多个文件组成,这些文件表示表对象.用户决定文件的位置.DB2 数据库 Linux 版.UNIX 版和 Windows 版控制它们的名称,而文件系统负责管理它们.通过控制写入每个文件的数据量,数据库管理器均