DB2入门(2)——数据库、实例、存储模型

来源:互联网 发布:seo 工程师 编辑:程序博客网 时间:2024/05/17 05:17

DB2的数据库、实例的概念

一个DB2实例可以同时管理多个数据库(DataBase)。

  • MySQL数据库:物理操作系统文件或其他形式文件类型的集合。在 MySQL 数据库中,数据文件就是我们才学习的frm,MYD,MYI,ibd 结尾的文件。
  • MySQL实例:MySQL 实例则是由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享,需要注意的是,数据库实例才是真正用于操作数据库文件的,数据库文件不是用编辑器,vim 这些来玩的,而是靠登录实例来操作的。MySQL 比较简单,实例与数据库的关系通常是一一对应的。
  • DB2数据库:数据库包含许多逻辑对象和物理对象。表、索引等数据库对象;缓冲池、日志文件、表空间;物理存储、表空间容器、目录、文件系统或裸设备

  • DB2实例:从DB2的体系结构方面来看,实例实际上就是DB2的执行代码和数据库对象的中间逻辑层。实例可以看成是关于所有的数据库及其对象的逻辑集合,实例为数据库运行提供一个环境。

  • DB2数据库和实例之间的区别:数据库是物理的,我们的表、索引存放在数据库中要占物理存储的;而实例是逻辑的,是共享内存、进程和一些配置文件(实例目录)的集合。

DB2存储模型

DB2利用一个逻辑存储模型和一个物理存储模型来处理数据。

这里写图片描述

DB2的逻辑存储模型

图的上半部分主要展示了逻辑存储模型:
1. 实例中管理着数据库;
2. 一个数据库中有很多表空间,可以把数据库看成是很多个表空间的集合;
3. 表空间中存放多个表(或索引)

DB2的物理存储模型

图的下半部分:
表空间物理上对应着若干个表空间容器,表空间可以跨许多个容器。表通过 表空间实实在在地将数据存放到容器(文件或者目录)中。

数据库的物理存储

  • 操作系统的最小存储单位是块(block),Linux/Unix 上最小的块是512字节;
  • 数据库中的最小存储单位是数据页(datapage),DB2数据库有4KB,8KB,16KB和32KB几种数据页;
  • 操作系统的页是4KB;
  • extent是整数倍的datapage的大小,这个整数倍数在创建表空间时使用extentsize来指定;
  • 表空间容器由多个extent(区)组成;
  • 表空间又由很多容器组成;
    表空间、容器、extent和数据页之间的关系
    表空间>表空间容器>extent区>数据页datapage
    这里对比一下MySQL的存储:
    表空间>段segment >extent区>数据页page
    MySQL innoDB的存储

DB2写容器的过程

我们创建的表最终是存储在底层表空间容器上的,那么DB2是如何写容器的呢?
这里写图片描述
表空间是由很多容器组成的,我们每次写容器的时候,写的单位为一个扩展数据块extent。extent由32个数据页组成(默认的extentsize为32),而数据页是I/O的最小单位

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

表空间中的容器、扩展数据块(extent)、数据页(datapage)和表空间之间的关系

DB2的表空间

通过上面的描述,我们发现在数据库的物理存储和逻辑存储模型中,表空间链接了物理存储模型和逻辑存储模型,其扮演了一个承上启下的角色。
- 在逻辑上,它向上面对的是数据库,向下它是存放表的容器,面向的是表;
- 同时表空间又在物理上映射底层的表空间容器——物理存储。

表空间是数据库调优的重点,数据库创建的绝大部分都是围绕着表空间进行的。

0 0