Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

数据库与表格空间

Posted on 2008-08-12 13:57 Prayer 阅读(264) 评论(0)  编辑 收藏 引用 所属分类: 数据库,SQL
 

容器: 物理存储设备(真正的存储设备),可以是操作系统目录(文件夹)、设备或操作系统文件,表实际存储于容器中

表空间:一个表空间可以包括多个容器,是容器的逻辑集合,一个容器只能属于一个表空间一个表空间也只能属于一个数据库。

表空间分类:系统表空间(sysspace:存放这个数据库的所有系统表格

            临时表空间(tempspace): 存放db2在执行sql指令时,因为排序、连接等工作产生的临时表

            用户表空间(userspace):存放用户自己定义的表

表: 在逻辑上,表存储于一个表空间中,实际上是分布在对应表空间的物理容器中,表空间在数据库内创建,表则在表空间内创建。

 

表空间中的表的数据分布在该表空间的数据容器中。

       当表空间由多个数据容器构成时,db2会把表的数据用循环的方式分散在这些容器上。

       例:

如果在表空间中建立一个employee表,db2 会把employee表的数据存在container0中,当数据量增大到一个extent后,就会把该表后面的数据放在container1中,当container1也用了一个extent后,再将后来的数据存到container2中,然后再到container0container1中。

如果在这个表格空间中再创建一个表格deptdb2会从container1开始存放数据,如果再创建第三个表格projectdb2会从container2开始创建表格。

最终,三个表的数据会以循环的方式,分散存放在3个容器上。

 

 

 

拆模:db2将数据循环分布在数据容器上的做法称为拆模。

好处:增进数据读取的性能

示例:你的机器上有4个磁盘驱动器,你建了一个由4个数据容器构成的表格空间,这4个数据容器分别放在这些磁盘驱动器上,通过拆模的作用,就可以将一个表格的数据“打散”在4个磁盘驱动器上,当db2需要从表格中读取大量的数据时,就可以利用4个磁盘驱动器独立的 I/O CHANNEL 将数据读入DB2的缓冲池。

 

模式是用来将一组数据库对象(例如,视图索引别名)分组的唯一标识符。即,如果您正在创建一个名为 PAYROLL 的表,则需要单调地搜索数据库以便弄清楚是否其他某些用户已经创建了同名的表。每个对象的名称只需要在它自己的模式中是唯一的。

大多数数据库对象的名称都由两部分组成,第一部分是模式名,第二部分是对象的名称。当创建了对象时,可以将它分配给特定模式。如果不指定模式,则将它分配给缺省模式,该模式通常就是创建对象的人员的用户标识。例如,姓名为 Smith 的用户可能具有一个名为 SMITH.PAYROLL 的表。

模式也成为数据库中的一个对象。模式是在创建模式中的第一个对象时创建的。模式可以由单个所有者所有,并且所有者可以控制对其中的数据和对象的存取权。

您可以:

  • 创建模式。
  • 通过在创建对象时指定模式名来显式地将对象添加到模式中。
  • 通过在创建对象时不指定模式名来隐式地将对象添加到当前模式中(通常是您的用户标识)。
  • 删除模式。
  • 授予或取消对模式的特权



只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理