简介

对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑。在本文中,我们将讨论DBA 要做出重要选择的两个方面:表空间和缓冲池。表空间和缓冲池的设计和调优会对 DB2 服务器的性能产生深远的影响,因此我们将着重讨论这些活动。

1 缓冲池

1.1    概述

一个缓冲池是与单个数据库相关联的,可以被多个表空间使用。当考虑将缓冲池用于一个或多个表空间时,必须保证表空间页大小和缓冲池页大小对于缓冲池所“服务”的所有表空间而言都是一样的。一个表空间只能使用一个缓冲池。

创建数据库时,会创建一个名为 IBMDEFAULTBP 的缺省缓冲池,所有的表空间都共享该缓冲池。可以使用 CREATE BUFFERPOOL 语句添加更多的缓冲池。缓冲池的缺省大小是 BUFFPAGE 数据库配置参数所指定的大小,但是可以通过在 CREATE BUFFERPOOL 命令中指定 SIZE 关键字来覆盖该缺省值。足够的缓冲池大小是数据库拥有良好性能的关键所在,因为它可以减少磁盘 I/O 这一最耗时的操作。大型缓冲池还会对查询优化产生影响,因为更多的工作可在内存中完成。

基于块的缓冲池 
V8 允许您留出缓冲池的一部分(最高可达 98%)用于基于块的预取操作。基于块的 I/O 可以通过将块读入相邻的内存区而不是将它分散装入单独的页,来提高预取操作的效率。每个缓冲池的块大小必须相同,并且由 BLOCKSIZE 参数进行控制。该值等于块的大小(单位为页),从 2 到 256,缺省值为 32。

扩展存储器 
DB2 不将扩展存储器用于缓冲区。但是,可以用扩展存储器来高速缓存内存页,使得从内存移出页变得更快。

1.2    创建缓冲池

db2 'CREATE BUFFERPOOL userbufpool IMMEDIATE SIZE 250 AUTOMATIC PAGESIZE 8K'

 

属性解释:

immediate/deferred immediate(规定如果系统上有足够的内存,则立即创建缓冲池。 immediate 选项是默认的。), deferred(规定在下一次数据库被停止和重新启动时再创建缓冲池。)

size 指定缓冲池的大小,并且以页为单位。

pagesize 指定缓冲池的页宽。默认页宽为 4 KB 或 4,096 字节。页宽可以按字节或千字节指定。

blocksize 指定在缓冲池基于块的区域中的一个给定块中的数据页的数量。块的大小必须介于 2 页与 256 页之间。默认值是 32 页。

numblockpages 指定在缓冲池的基于块的区域中创建的数据页的数量。numblockpages 的实际值可能与指定的值不符,因为其大小必须是 blocksize 的倍数。

AUTOMATIC 缓冲池交由DB2自动管理,当指定了AUTOMATIC之后,表空间的NPAGES=-2

缓冲池中基于块的区域不能超过缓冲池大小的 98%。如果将基于块的区域的大小指定为 0,则会禁用缓冲池的块 I/O。

extended storage/not extended storage 指定是否将缓冲池中受到危害的页复制到被称作扩展存储(extended storage)的辅助缓存中。从扩展存储检索数据比从磁盘检索数据更为高效,但是不如从缓冲池检索数据高效,因此它不适用于 64 位环境。

定义好缓冲池的页宽和名称后,便不能更改它们。

1.3    修改缓冲池

db2 'ALTER BUFFERPOOL userbufpool IMMEDIATE SIZE 500 ' 

 (修改缓冲池大小为:500 * pagesize )

 

db2 'ALTER BUFFERPOOL userbufpool IMMEDIATE SIZE 500'

1.4    删除缓冲池

DROP BUFFERPOOL userbufpool     

1.5    查看缓冲池

SELECT * FROM SYSCAT.BUFFERPOOLS;

1.6    例子

1.6.1    SQL客户端创建缓冲池

--创建缓冲池

--1.创建基础数据表空间缓冲池-- 100M

CREATE BUFFERPOOL BASEDATA_BUFPOOL IMMEDIATE SIZE 6400 PAGESIZE 16K;

--2.创建系统业务表空间缓冲池 -- 200M

CREATE BUFFERPOOL BUSINESS_BUFPOOL IMMEDIATE SIZE 12800 PAGESIZE 16K;

--3.创建大数据数据表空间缓冲池 -- 300M

CREATE BUFFERPOOL DASHUJU_BUFPOOL IMMEDIATE SIZE 19200 PAGESIZE 16K;

--4.修改默认缓冲池大小-- 200M

ALTER BUFFERPOOL IBMDEFAULTBP IMMEDIATE SIZE 12800;

当指定了AUTOMATIC之后,表空间的NPAGES=-2

1.6.2    Linux控制台创建

切换至DB2管理员账号

su - db2inst1

连接至Test数据库

db2 CONNECT TO Test

创建缓冲池

1.创建基础数据表空间缓冲池-- 100M(根据服务器具体配置可调整)

db2 'CREATE BUFFERPOOL BASEDATA_BUFPOOL IMMEDIATE SIZE 6400 PAGESIZE 16K'

2.创建系统业务表空间缓冲池 -- 300M(根据服务器具体配置可调整)

db2 'CREATE BUFFERPOOL BUSINESS_BUFPOOL IMMEDIATE SIZE 19200 PAGESIZE 16K'

3.创建大数据数据表空间缓冲池 -- 600M(根据服务器具体配置可调整)

db2 'CREATE BUFFERPOOL DASHUJU_BUFPOOL IMMEDIATE SIZE 38400 PAGESIZE 16K'

1.7    监视缓冲池

打开监视  db2 update monitor switches using bufferpool on

查看缓存池使用  db2 get snapshot for bufferpools on kg

关闭监视  db2 update monitor switches using bufferpool off

2       表空间

2.1 概述

1       数据库中的所有数据都存储在许多表空间中。可以认为表空间是孩子而数据库是其父母,其中表空间(孩子)不能有多个数据库(父母)。由于表空间有不同用途,因此根据它们的用途和管理方式将它们分类。根据用途有五种不同的表空间:

2       目录表空间

3       每个数据库只有一个目录表空间,它是在发出 CREATE DATABASE 命令时创建的。目录表空间被 DB2 命名为 SYSCATSPACE,它保存了系统目录表。总是在创建数据库时创建该表空间。

4       常规表空间

5       常规表空间保存表数据和索引。它还可以保存诸如大对象(Large Object,LOB)之类的长数据,除非这些数据显式地存储在长表空间中。如果某些表空间是数据库管理的空间(Database Managed Space,DMS),则可以将表及其索引分别放到单独的常规表空间中。我们将在本文后面定义 DMS 和系统管理的空间(System Managed Space,SMS)之间的区别。每个数据库中必须至少有一个常规表空间。创建数据库时指定该表空间的缺省名为 USERSPACE1。

6       长表空间

7       长表空间用于存储长型或 LOB 表列,它们必须驻留在 DMS 表空间中。它们还可以存储结构化类型的列或索引数据。如果没有定义长表空间,那么将把 LOB 存储在常规表空间中。长表空间是可选的,缺省情况下一个都不创建。

8       系统临时表空间

9       系统临时表空间用于存储 SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据。每个数据库必须至少有一个系统临时表空间。随数据库创建的系统临时表空间的缺省名为 TEMPSPACE1。

10     用户临时表空间

11     用户临时表空间存储已声明的全局临时表。创建数据库时不存在用户临时表空间。至少应当创建一个用户临时表空间以允许定义已声明的临时表。用户临时表空间是可选的,缺省情况下一个都不创建。

12    表空间管理

13     可以用两种不同的方式管理表空间:

14     系统管理的空间(SMS)

15     SMS 表空间由操作系统进行管理。容器被定义成常规操作系统文件,并且是通过操作系统调用访问的。这意味着所有的常规操作系统功能将处理以下内容:操作系统将缓冲 I/O;根据操作系统约定分配空间;如有必要就自动扩展表空间。但是,不能从 SMS 表空间删除容器,并且仅限于将新的容器添加到分区的数据库。前一节中所说明的那三个缺省表空间都是 SMS。

16     数据库管理的空间(DMS)

17     DMS 表空间是由 DB2 管理的。可以将容器定义成文件(在创建表空间时将把给定的大小全部分配给它们)或设备。分配方法和操作系统允许多少 I/O,DB2 就可以管理多少 I/O。可以通过使用 altER TABLESPACE 命令来扩展容器。还可以释放未使用的那部分 DMS 容器(从 V8 开始)。

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

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

19     DB2的表空间按管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)。

20     按类型分为:规则表空间、长整数表空间、系统临时表空间、用户临时表空间。其中长整数表空间只能是DMS的。

21     规则表空间中包含用户数据的表。默认用户表空间名为USERSPACE1,索引也存储在规则表空间中,另外系统目录表也放在规则表空间中。 默认的系统目录表空间名为SYSCATSPACE。

22     临时表空间分为系统临时表空间和用户临时表空间。系统临时表空间用来存储各种数据操作(排序、重组表、创建索引、连接表)中所需的内部临时数据,虽

23     然可以创建任意多个系统临时表空间,但建议用户只使用大多数表所使用的页大 小创建一个,默认系统临时表空间名为TEMPSPACE1。用户临时表空间用来存储已

24     说明全局临时表(已说明全局临时表存储的是应用程序临时数据)。用户临时表 空间不是在数据库创建时默认创建的。

25     SMS每个容器是操作系统的文件空间中的一个目录;DMS每个容器是一个固定的、预分配的文件,或是物理设备。

26     SMS的管理比较简单,由操作系统自动管理,空间的大小随数据量的变化系统 自动调整。

27     DMS是由数据库管理的,空间大小在创建时确定,空间不够时要手工添加或删 除部分数据以释放空间。

28     大多数情况下,DMS的性能比SMS好。

2.2 创建表空间

1.DMS自动存储表空间(Automatic Storage DMS)

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

db2 'create regular tablespace tbspc01 pagesize 8k managed by automatic storage extentsize 8 prefetchsize 8 bufferpool bf01 overhead 24.1 transferrate 0.9 dropped table recovery on'

2.3 修改表空间

ALTER TABLESPACE tbspc01 bufferpool bf01; --修改表空间缓冲池

ALTER TABLESPACE DASHUJU_TBS  no file system caching; --修改缓存级别

2.4 删除表空间

drop tablespace tbspc01;

2.5 查看表空间

linux查看表空间使用情况

db2 list tablespaces show detail

目录表空间--SYSCATSPACE,它保存了系统目录表,在创建数据库是即创建

常规表空间--USERSPACE1(此为缺省名称),保存表数据和索引

系统临时表空间--TEMPSPACE1(此为缺省名称),用于存储SQL操作期间所需的内部临时数据

查看具体表空间

db2 list tablespace containers for TablespaceID(具体的id) show detail

Sql查看

sql查看表空间

SELECT * FROM SYSCAT.TABLESPACES;

SELECT TBSPACE, BUFFERPOOLID FROM SYSCAT.TABLESPACES;

DB2缓冲池、表空间详解相关推荐

  1. Oracle表空间_PK是什么意思,Oracle表空间详解

    关键字:Oracle表空间详解 一.============  查询 =================== 1.查询oracle用户的默认表空间和临时表空间 select default_table ...

  2. oracle offline 删除表,Oracle offline 表空间详解

    表空间详解 一.Offline的整体效果:offline以后,未完成的事物可以提交或回滚,但不能发起新的事物,也不能进行查询. 二.Offline的语法: ALTER TABLESPACE table ...

  3. Oracle 表空间详解(tablespace)

    文章目录 1 概述 1.1 相关视图 1.2 内存结构图示 2 常用操作 2.1 创建 2.2 修改 2.3 删除 2.4 查询 3 扩展 3.1 ORA-01653:表无法在表空间中扩展 3.2 A ...

  4. MySQL表空间详解

    1 表空间总览 2 页面结构 其中页面的通用部分有:File Header和 File Trailer. 2.1 File Header组成 check sum:校验和 page offset:页号 ...

  5. 数据库 表空间详解以及其使用方法 (Oracle)

    表空间 表空间是数据库中最大的逻辑单位,Oracle数据库采用表空间将相关的逻辑组件组合在一起,一个Oracle数据库至少包含一个表空间.每个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空 ...

  6. oracle已经创建表空间不存在,oracle表空间的创建、删除、查看、表空间不存在、及修改默认表空间详解...

    一.创建表空间 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地 ...

  7. Oracle10g之传输表空间详解(原创)

    可传输表空间概述 Oracle 的可传输表空间特性通过将 元数据和数据文件 简单地从一个数据库移动到另一个数据库,提供 在数据库之间有效移动大数据的一种简易方法.代替重新创建对象,可移植表空间可以让 ...

  8. Oracle10g之传输表空间详解

    可传输表空间概述 Oracle 的可传输表空间特性通过将 元数据和数据文件 简单地从一个数据库移动到另一个数据库,提供 在数据库之间有效移动大数据的一种简易方法.代替重新创建对象,可移植表空间可以让 ...

  9. Oracle 表分区详解(partition table)

    文章目录 1 概述 1.1 思维导图 2 分类 2.1 传统表分区 2.1.1 范围分区 range 2.1.2 列表分区 list 2.1.3 哈希分区 hash 2.1.4 复合分区 range ...

最新文章

  1. Depth graph
  2. 使用 laravel 命令安装 Laravel
  3. Java键盘字符乱码判断代码
  4. abap 字符串处理
  5. 阿里面试题——Java对象初始化
  6. java数据库编程——元数据(metadata)+web 与企业应用中的连接管理
  7. Sharepoin学习笔记—架构系列--01 Sharepoint的网页(Page),网页解析(Parsing)与解析安全处理(Security)
  8. php socket 读网页,PHP webSocket实现网页
  9. windows tcp ping 端口工具及使用方法
  10. matlab 三角函数积分,正弦函数与三角函数积分及Matlab编程.doc
  11. 【python】将多个txt文件合并为一个txt文件
  12. cad化工设备绘图_auto cad在化工设备制图中的应用 ——致初学cad绘图者.ppt
  13. 高中计算机绘画教,高中美术电脑绘画教案.doc
  14. 图像分辨率之1080P与1080i
  15. 了解抖音小店店铺装修功能以及条件
  16. openwrt上透明AP的实现
  17. c语言提取字符串里面的数字,一个截取字符串中数字的函数
  18. MySQL查询时间戳
  19. 银行系统(万里长征始于足下)
  20. SharePoint 16 规划大型文档存储库

热门文章

  1. GET/POST 和TCP/UDP 区别
  2. 科普一下IP路由基础
  3. 计算机科学计数法是哪个键,卡西欧计算器中的科学计数法键如何使用?请举例!急!...
  4. 100V降压图纸 电路最简单的高压降压解决方案
  5. 送你一把学习【线性代数】的钥匙
  6. 积跬步,聚小流------关于手机号,前端应该注意哪些
  7. Z-score(Z值)的意义--转载
  8. 使用Visual Studio调试BGFX的Shader
  9. 哒哒哒~~今天说 事务的隔离级别和传播特性
  10. 1. 使用 while/for 循环:计算 1-100 之间所有数字的和,所有偶数的和,所有奇数的和