如何综合掌握 DB2 和 Informix

来源:IBM 作者: 2007-11-20 出处:pcdog.com

.net  access  db2  db2 存储过程  eclipse  
上一页 1 2 3 4 5 6 7 8 9 10 下一页 

数据库创建和存储模型

DB2 中,可以使用数据库创建命令或使用控制中心工具创建数据库。本文将介绍如何使用命令创建数据库和数据库对象。在探讨这些命令之前,先来了解一下什么是表空间。

表空间

表空间是一个包含表、索引、大对象和长数据的存储结构。表空间谓语数据库内。它允许您直接将数据库和表数据的位置分配到容器上。(一个容器可以是一个目录名、一个设备名或一个文件名。)这种机制可以提供改善的性能和更加灵活的配置。一个数据库可以具有多于一个的表空间,而一个表空间不能同时属于多个数据库。

表空间管理

在 DB2 中,可以有两种不同的方式管理表空间:, table spaces are managed in two different ways:

根据表空间的用途和管理方式将它们分类。根据用途有五种不同的表空间:

图 8 显示了一个具有五个表空间的数据库:一个目录表空间、两个常规表空间、一个长表空间和一个系统临时表空间。没有创建用户临时表空间。其中有 8 个容器。


图 8. 具有表空间和缓冲池的 DB2 数据库
如何综合掌握 DB2 和 Informix(图十一)

可使用以下命令创建此类数据库和表空间。

create database sampleconnect to samplecreate bufferpool BP1 size 1000 pagesize 4 Kcreate bufferpool BP2 size 1000 pagesize 8 Kcreate bufferpool BP3 size 1000 pagesize 32 Kcreate regular tablespace userspace1 pagesize 8 k managed by databaseusing (file 'C1U1' 1000, file 'C2U1' 1000) bufferpool BP2 create regular tablespace userspace2 pagesize 4 k managed by databaseusing (file 'C1U2' 1000) bufferpool BP1 create large tablespace largespace1 pagesize 32 k managed by databaseusing (file 'C1L1' 1000, file 'C2L1' 1000, file 'C3L1' 1000) bufferpool BP3create temporary tablespace systemp1 pagesize 32 k managed by system using (path '/db1/C1T1') bufferpool BP3

使用上面这组命令将创建缓冲池和表空间。现在来看一下 DB2 中的容器和缓冲池是什么。

容器

每个表空间都有一个或多个容器。重申一次,您可以认为容器是孩子,而表空间是其父母。每个容器只能属于一个表空间,但是一个表空间可以拥有许多容器。可以将容器添加到 DMS 表空间,或者从 DMS 表空间中删除容器,而且可以更改容器的大小。只能将容器添加到某个分区中分区数据库上的 SMS 表空间,在添加之前该分区还未给表空间分配容器。添加新的容器时,将启动一个自动的重新均衡操作以便将数据分布到所有容器上。要了解更多关于容器和重新均衡操作的内容,请参考 DB2 9 Information Center。

缓冲池

一个缓冲池是与单个数据库相关联的,可以被多个表空间使用。当考虑将缓冲池用于一个或多个表空间时,必须保证表空间页大小和缓冲池页面大小对于缓冲池所 “服务” 的所有表空间而言都是一样的。一个表空间只能使用一个缓冲池。创建数据库时,会创建一个名为 IBMDEFAULTBP 的默认缓冲池,所有的表空间都共享该缓冲池。可以使用 CREATE BUFFERPOOL 语句添加更多的缓冲池。大型缓冲池还会对查询优化产生影响,因为更多的工作可在内存中完成。要了解更多关于缓冲池的内容,请参考 DB2 9 Information Center。

IDS 中的数据库创建

现在您已经了解了 DB2 中数据库是如何创建的以及 如何对表空间进行管理,现在来看一下在 IDS 中 dbspaces 和数据库是如何彼此相关的。

dbspaces

dbspace 是由一个或多个块组成的逻辑单元。Chunk 表示存储的物理单元。数据库服务器可以使用成熟的(cooked)文件或原始(raw)设备来存储数据。数据库是被创建在常规 dbspace 中的,因此在创建数据库之前必须已经存在一个常规 dbspace。默认的常规 dbspace 称为 rootdbs,它是在创建 IDS 实例时被创建的。除非 create database 命令中说明要使用另一个常规 dbspace,否则将使用默认 dbspace 创建数据库。系统目录表和数据库本身位于同一个 dbspace 中。同一个 Informix 实例中的任何其他数据库都可以使用所有的 dbspace。IDS 具有大量的 dbspace,下面将做简要介绍。

举例来说,如果运行下面的数据定义语言(data definition language,DDL),首先会创建 2 GB 大小的 dbspace Dbdbspace,然后在 dbspace Dbdbspace 中创建数据库 sampledb。sampledb 的数据库目录表位于 Dbdbspace 中。

Onspaces -c   -d  Dbdbspace -p /work/database/chunk1 -o 0 -s 20480000 where,	c  For Creating Dbspace	p  path name for the physical unit	o  offset in K bytes	s  size of dbspace in Kbytes	a  for adding chunk to a dbspaceCreate database sampledb in Dbdbspace;


图 9. 具有 Dbspace 和块的 IDS 数据库
如何综合掌握 DB2 和 Informix(图十二)

如图 9 所示,数据库中的所有数据库对象可以被存储在一些 dbspace 中。这个例子具有一个默认的 Root Dbspace、三个称为 Root Dbspace 的常规 dbspace、User Dbspace、Index Dbspace、一个 Temporary Dbspace、一个 Blobspace、一个智能 LOB sbspace 和一个 extspace。上面这个例子中 Database 1 中的数据库对象跨越了所有可用的 dbspace。表和索引可以驻留在不同的 dbspace 中。为了更好地理解,一个常规 dbspace 被命名为 Index Dbspace,您可以选择在这个 dbspace 中创建索引。您还可以选择在根 dbspace 中创建数据库(尽管这不是一个很好的应用)。在图 9 中,Database 2 驻留在 Root Dbspace 中。

下面的代码将向 userDbSpace 添加一个块: Onspaces -a -d UserdbSpace -p /work/database/chunk3 -o 0 -s 4096000 . 关于 dbspaces 和向 dbspaces 添加块(chunk)的更多信息,请参见 IDS v10.0 Information Center。



上一页 1 2 3 4 5 6 7 8 9 10 下一页 
上一篇:IBM新版Informix数据库 提高备援能力
下一篇:Informix