DB2数据库的逻辑结构和存储模型
在DB2中,一个数据库只能属于一个实例,一个实例可以对应多个数据库,所以实例和数据库的关系是一对多。
每个数据库是由一组对象组成的,如:表、视图、索引等。表是二维结构,由行和列组成,表数据存放在表空间里,表空间是数据库的逻辑存储层,每个数据库可以包含多个表空间,每个表空间只能归属于一个数据库,所以数据库和表空间的关系是一对多。
所以DB2数据库的逻辑结构分别为:实例–>数据库–>表空间–>表。
物理结构:
每个表空间由一个或多个容器组成,容器是映射到物理存储,容器可以是目录、文件、裸设备。每个容器只能属于一个表空间。根据数据管理方式,表空间可以分为系统管理(SMS)、数据库管理(DMS)
DB2将表和索引存储在PAGE页里,page是db2中最小的物理分配单元,表中的每行数据只能包含在一页中,不能跨页。DB2支持的页大小分为:4K、8K、16K、32K四种,当DB2在读取数据的时候,不是按页读取,而是按照extent(块)读取,一个extent是由一组连续的页组成。如果一个表空间有多个容器,为了数据均衡的分布,所以在写数据的时候,按照循环的方式在各个容器里写数据,当一个容器中写满一个extent的时候,将开始在第二个容器继续写extent,周而复始,可以提高读写的效率。
每个表空间由一个或多个容器组成,表空间为逻辑层次中,而真正的数据是存放在容器中的,容器是由多个extent组成。
DB2的存储模型为:表空间---->容器---->extent(块)------>page(页)。
在V8中,当每个PAGE的大小为32K的时候,表空间最大只能容纳256G。
在V9开始,当每个PAGE的大小为32K的时候,表空间最大可以容纳16T。这就是大表空间(large)。从V9开始,默认创建的数据表空间均为大表空间。