Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427392
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类:

2008-06-18 00:06:19

数据库的逻辑结构

相对于物理结构,数据库的逻辑结构有些复杂,从上到下可依次划分为:表空间(table space)、段(segment)、扩充(extent)、数据库块。

 

1. 表空间

 

表空间是一个逻辑单元,是数据库中存放表和索引数据的磁盘空间,包含多个物理上的数据文件,这些数据文件可以存放在不同的磁盘上。通过表空间,将系统对数据的存取、访问和物理上的数据文件割裂开来。

表空间对于数据库,就好似操作系统中的文件系统一样。在系统管理员创建好文件系统之后,用户可以方便地存放数据文件,随意地读写,不用关心文件在物理上如何存放。同样,使用表空间,用户操作数据库中的数据,就不必关心数据的实际存储方式了。

在一个数据库系统中,根据表空间的使用方式,一般会建立以下的表空间:

1)系统表空间。存放数据字典等系统相关信息。

2)用户表空间。存放用户表和索引的数据。

3)临时表空间。存放临时表、排序及连接过程中的中间结果。

4)日志表空间。存放系统产生的事务日志信息。

 

2.

 

段是表空间中磁盘空间的集合,和数据库中的表、索引密切相关。在一个表空间中,为一个表、索引分配的所有磁盘空间就组成一个段。每一个段都有一个特定的数据结构,存放在表空间中的所有表、索引都有一个对应的段存在。

向表中插入数据时(也同时引起索引中数据的插入),系统首先要检查该表中是否有可用空间。如果没有可用空间,系统就为该表分配新的磁盘空间,这些磁盘空间可以来自表空间所属的任何数据文件。因此,一个段所包含的磁盘空间可以在物理上不连续。

在正常情况下,一个表、索引就对应一个段。如果表、索引被分区,数据被分成几部分存放在几个表空间中,那么每一个表空间中的磁盘空间就组成表、索引的一个段。在这种情况下,一个表、索引就由多个段组成。

 

3. 扩充

 

扩充是一块连续的磁盘空间,是数据库中存储空间的分配单元,数据库系统按照此单位为需要磁盘空间的表、索引分配空间。

如果系统发现表、索引没有可用空间,就按照扩充的大小,为它分配新的磁盘空间。在进行空间分配时,系统从表、索引所在表空间中选择一个数据文件,检查该数据文件中是否有连续的空闲空间,可以满足扩充的空间要求。如果找到,就从该数据文件中分配扩充,否则就继续检查其它的数据文件。如果表空间的所有数据文件中,都不存在一块连续的磁盘空间,可以满足一个扩充的空间要求,那么空间分配失败,系统报错。

数据库系统以扩充为单位,对表、索引进行空间分配,主要是对以下几个方面进行考虑、平衡的结果:

1)表、索引中的所有页应当相邻,以获取最好的系统性能。

2)大多数表空间为多个表、索引所共享。

3)一些表、索引的尺寸事先不能确定。

4)表、索引中的数据在不同的时间、以不同的速度增长。

因为表、索引的尺寸无法确定,系统无法事先分配磁盘空间,只能在它们需要时进行分配。而使用数据库页进行空间分配,必然使多个表、索引的数据页大量交叉,数据的连续性将遭到破坏,进而极大地影响到系统的性能。基于这两个方面的考虑,数据库系统就以扩充作为磁盘分配的单元,一个扩充至少要包含8个数据页。

在表、索引中的数据被删除而释放了空间后,系统将检查释放的空间。如果连续的磁盘空间达到一个扩充的尺寸,系统就进行回收,从而该磁盘空间可以分配给其它的表、索引。

 

4. 数据库页

 

数据库页又称为数据库块、逻辑页、逻辑块,是数据库读写磁盘的单位,其页尺寸(也称为块尺寸)为操作系统页尺寸的倍数。

每一个操作系统平台,都有一个读写磁盘的页尺寸。操作系统使用这个尺寸,对磁盘进行数据的读、写操作。对特定的操作系统平台,这个页尺寸是固定的,用户无法修改。

数据库的页尺寸,是基于、但又不同于操作系统的页尺寸,它是数据库系统对磁盘读写的最小单位,是操作系统页尺寸的倍数。数据库以此为单位,请求磁盘中的数据。如果页尺寸为2K,则数据库系统可以一次从磁盘读取2K数据;如果页尺寸为4K,则可以一次读取4K数据。在创建数据库时,如果没有明确指定,数据库缺省就使用操作系统的页尺寸。

在一些数据库系统中,只允许使用一个页尺寸,在创建数据库时设定,然后就不能修改。而在另一些数据库系统中,可以设定单个表空间的页尺寸,不同表空间可以使用不同的页尺寸,从而系统对不同的数据文件、表空间进行操作时,可能需要使用不同的页尺寸读写磁盘上的数据。

如果数据库系统使用了多个页尺寸,就需要在内存中建立多个具有不同页尺寸的数据缓冲区。一个数据缓冲区,只能存放具有相同页尺寸表空间中的数据。如果没有对应页尺寸的数据缓冲区,表空间中的数据就无法被读取。

由于数据库系统是对用户数据的管理和维护,因此使用大的页尺寸可以提高数据的磁盘读些速度。

阅读(1096) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~