DB2数据库存储模型

--

DB2数据库存储模型

DB2利用一个逻辑存储模型和一个物理存储模型来处理数据。用户操作的实际数据放在表中。表由行和列组成,用户并不知道数据的物理表示。这一事实有时候称为数据的物理独立性。

表本身放在表空间中,表空间是存放表的储藏室(容器),一个表空间可以包含多个表。同时,表空间物理上又对应着若干个表空间容器。容器可以由目录名、裸设备名或文件名标识。容器被分配给表空间。表空间可以跨许多容器,这意味着可以突破操作系统对于一个容器可以包含的数据量的限制。这样,表空间作为就逻辑设计中的表与物理设计中的容器之间的一个桥梁,表通过表空间实实在在地将数据存放到容器(文件或者目录)中。图3-3说明了所有这些对象之间的关系。

从图3-3中我们可以看到:一个数据库中有很多表空间,可以把数据库看做是很多个表空间的集合;我们可以根据需要创建多个表空间。而我们用户创建的表、索引等数据库对象存放在表空间中。表直接面向应用。而同时表空间又和底层的物理存储对应,表空间可以有多个容器,而容器是在底层存储上的。所以通过表空间数据库实现了物理存储和逻辑存储的统一。表空间是DB2中最重要的概念之一。

 
(点击查看大图)图3-3  数据库、表空间、表和表空间容器之间的关系

下面我们先讲解数据库的物理存储。我们都知道操作系统的最小存储单位是块(block),在Linux和UNIX上最小的块是512字节,在Windows上最小的存储单位为1KB。而数据库中最小的存储单位是数据页(datapage),它是DB2读写的最小单位。DB2数据库中有4KB、8KB、16KB和32KB几种数据页。我们可以根据业务类型(OLAP、OLTP等)和表的大小来选择合适的数据页。DB2数据库在写物理存储时,为了保证写的吞吐量,引入了一个更大的单位extent,它是整数倍的datapage的大小。这个我们可以在创建表空间时指定extentsize大小来确定。而表空间容器又是由很多个extent组成的。同时表空间又由很多容器组成。它们之间的关系如图3-4所示。

 
(点击查看大图)图3-4  表空间、容器、extent和数据页之间的关系
从上面的图3-4中我们知道我们创建的表最终是存储在底层表空间容器上的,那么DB2如何来写容器呢?请看下面的图3-5。
 
(点击查看大图)图3-5  DB2写容器的过程

我们知道表空间是由很多容器组成的,我们每次写容器的时候,写的单位为一个扩展数据块extent。extent的大小我们可以在创建数据库和表空间的时候通过extentsize大小指定;而extent又是由很多extentsize(默认32)个数据页(datapage)组成。datapage是DB2数据库中最小的存储单位,是我们每次读写的最小I/O单位。

图3-6显示具有两个4KB页扩展数据块(extent)大小的HUMANRES表空间,它有4个容器,每个容器有少量已分配的扩展数据块(extent)。DEPARTMENT和EMPLOYEE表各有7页,且跨所有4个容器。一个extent同时只能被一个表写,也就是说,不可能两张表同时共用一个extent,因为写容器的最小单位是extent,当我们往表中插入数据发现没有空间时, DB2就会为该表分配一个extent。

 
(点击查看大图)图3-6 表空间中的容器、
扩展数据块(extent)、数据页(datapage)和表空间之间的关系


通过上面的讲解,我们发现在数据库的物理存储和逻辑存储模型中,表空间连接了物理存储模型和逻辑存储模型,其扮演了一个承上启下的角色。在逻辑上,它向上面对的是数据库,向下它是存放表的容器,面向的是表;而同时表空间又在物理上映射底层的表空间容器-- 物理存储。同时表空间又是数据库性能调优的重点,而数据库创建工作的绝大部分都是围绕着表空间进行的,下面我们就首先讲解数据库中表空间这个最重要的概念。

我们首先了解表空间的类型,DB2中有3种管理类型的表空间。


--摘自:《循序渐进DB2-系统管理、运行维护与应用案例》第3章创建数据库和表


----------------------

数据库物理目录:
1、创建数据库时,可以指定数据库所在目录,如果不指定,将使用DBM的配置参数DFTDBPATH。
2、在linux或unix上,可以指定数据库所在目录,在window上,只能指定逻辑盘
3、如果使用分区数据库,分区节点信息存放在实例目录下的db2nodes.cfg文件中。

数据库逻辑存储单位:
1、数据库读写单位是extent,它是page的倍数,在创建表空间的时候用EXTENTSIZE 参数指定,如果不指定,将使用数据库配置文件中的DFT_EXTENT_SZ 参数。
2、如果pagesize是4K,表空间最大可以到64G,如果pagesize是32K,表空间最大可以到512G,
3、catalog表空间属于常规表空间,但它可以含有大对象的列,在访问这些列时,不使用buffer pool直接读取硬盘,速度将依赖文件系统的cache。如果系统是分区数据库,catalog只能有一套,并且存储在catalog分区上。
4、系统临时表空间用于系统的中间表、排序、建索引和外连接等。同样pagesize的系统临时表空间可以保持一个。如果用户应用中用到全局临时表,则必须创建一个用户临时表空间。临时表空间最大可以达2TB。
5、SMS表空间的容器只能是目录,目录下每个文件对应的一个表对象,sms表空间的容器不能动态添加。创建时目录路径可以是绝对路径也可以是相对路径, 目录可以存在也可以不存在,系统可以动态创建目录,如果目录存在,它必须是一个空目录,如果目录是相对路径,将在数据库缺省目录下创建相对目录(如: /NODE0000/SQL00001/ts_app),并且每个目录下有SQLTAG.NAM文件记录该容器属于哪个表空间。
SQL00014.DAT - Normal data records
SQL00014.INX - Indexes
SQL00014.LF - Long varchar column data
SQL00014.LB - LOB column data
SQL00014.LBA - LOB allocation information
SQL00014.BKM - Block information for MDC tables
6、DMS表空间的容器分为设备容器和文件容器
设备容器:unix上就是裸设备,window上就是为格式化的逻辑分区
create tablespace mytbspc managed by database using (device ‘/dev/rmydisk1′ 200M)~~unix
create tablespace mytbspc managed by database using (device ‘\\.\G:’ 200M) ~~windows
文件设备:可以用绝对路径或相对路径,文件可以存在也可以不存在
create tablespace mytbspc managed by database using (file ‘/myfile1′ 200M)~~unix
create tablespace mytbspc managed by database using (file ‘G:\myfile1′ 200M)~~windows

表空间上的选项:
Page Size:4k,8k,16k,32K. In order to create a tablespace with a page size 8K, there must already be a buffer pool with the same page size.
Extent Size: specifies the number of pages that will be written to the container. The default value is specified by the DFT_EXTENT_SZ database configuration parameter.
Prefetch Size: specifies the number of pages that will be read from the tablespace when data prefetching being performed.
Buffer Pool:
Overhead: specifies the I/O controller overhead and disk seek and latency time, in milliseconds.
Transfer Rate: Specifies the time required to read one page into memory, in milliseconds.
Dropped Table Recovery: Specifies whether tables in the table space that have been dropped can be recovered using the RECOVER TABLE ON option of the ROLLFORWARD command. This option can be specified only for a REGULAR table space.

Table space high water mark:
如果对表空间的容器删除或缩小时,DMS表空间的水印将起很大作用。
查看水印信息:执行db2dart /dhwm然后 输入表空间ID

表空间大小限制:
Page Size ----------Table Space Size
4 KB-------------64 GB
8 KB-------------128 GB
16 KB------------ 256 GB
32 KB------------ 512 GB

日志文件目录(循环日志或归档日志)应该建在独立的磁盘上,以提高效率。

---------------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值