DB2数据
DB2数据库是一个对象的集合,对象包括表、索引、视图和大对象。
DB2存储模型
DB2使用一个逻辑存储模型和一个物理存储模型来处理数据库。
用户操作的实际数据存储在表中;表本身放在表空间中,并且表空间可以包含多个表。
容器是一个物理存储设备。它可以由目录名、设备名或文件名标识。容器被分配给表空间,表空间可以跨许多容器。
DMS和SMS表空间
DB2支持三种表空间:
系统管理的表空间(System-Managed Spacce)由操作系统的文件系统管理器分配和管理空间。
数据库管理的表空间(Database-Managed Space)由数据库管理程序控制存储空间。
DMS的自动存储(Automatic Storage With DMS) DBA不必显示地定义表空间的位置和大小,系统将自动地分配表空间。在DB2 9中,数据库创建时将启用自动存储,除非DBA显示地覆盖这个设置。DB2只能在创建数据库时启用自动存储,对于没有启用自动存储的数据库,不能在以后启用这个特性;同样,对于在最初启用了自动存储的数据库,也不能再以后禁用这个特性。
创建数据库命令:
CREATE DATABASE TEST
发出这个命令时,DB2会创建日志文件、配置信息、历史文件和三个表空间:
SYSCATSPACE:保存DB2系统编目的地方;
TEMPSPACE1:放置中间结果的临时工作区;
USERSPACE1:默认情况下存放所有用户对象(表、索引)的地方。
CREATE DATABASES TEST
AUTOMATIC STORAGE ON
/u01/app/db_1/storagepath001,
/u01/app/db_1/storagepath002,
/u01/app/db_1/storagepath003
AUTORESIZE YES
INITIALSIZE 30M
INCREASESIZE 7M
MAXSIZE NONE
这个创建数据库的语法是错误的。在创建数据库时不能指定存储空间的大小,而是在创建表空间时指定。
CREATE DATABASE TEST
AUTOMATIC STORAGE YES ON
/u01/app/db_1/storagepath001,
/u01/app/db_1/storagepath002,
/u01/app/db_1/storagepath003
创建表空间:
CREATE TABLSAPCE TEST MANAGED BY AUTOMATIC STORAGE;
在没用启用自动存储的数据库创建表空间时,必须指定MANAGED BY SYSTEM或MANAGED BY DATABASE子句。
SMS表空间管理使用SYSTEM USING关键字:SYSTEM USING ('container string');对于SMS表空间,container string表识一个或多个将属于这个表空间的容器,表空间的数据存储在这些容器中。
DMS表空间管理使用DATABASE USING关键字:DATABASE USING('FILE/DEVICE 'container string' number of pages);指定容器的类型FILE或DEVICE和大小PAGESIZE,大小还可以指定为一个整数,后面跟着K、M或G。
对于FILE容器,字符串必须是绝对或相对的文件名;如果文件名不是绝对的,它就相对于数据库目录;如果目录名的任何部分不存在,数据库管理程序就会创建这个目录。
对于DEVICE容器,字符串必须是设备名而且这个设备必须存在。
所有容器必须是在所有数据库上唯一的;一个容器只能属于一个表空间。
EXTENTSIZE number of pages;EXTENTSIZE指定数据库可以写到一个容器中的pagesize页面数量,达到这个数量之后将跳到下一个容器(后面也可以跟K、M、G或整数)。
PREFETCHSIZE number of pages;PREFETCHSIZE指定在执行数据预获取时将从表空间中读取的pagesize页面数量(后面也可以跟K、M、G或整数)。预获取会在查询引用数据之前读取查询所需的数据,不需要等待底层操作系统执行 I/O操作。