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

2008年(239)

我的朋友

分类: Oracle

2008-06-18 00:01:13

系统对表的处理

用户创建表时可以指定表的空间尺寸,系统根据此设置为表分配磁盘空间。然而一般来说,由于无法预知有多少数据要存入表中,也就不能预测一个表需要多大的磁盘空间,从而无法在创建表时进行磁盘空间的分配。大多数情况下,表的空间分配在需要时进行。当向表中插入数据时,如果没有可用空间,系统就根据扩充的大小,为表分配新的磁盘空间。

用户使用SQL语句操作表,在长时间地对表进行增加、修改、删除操作之后,表的记录以及磁盘空间使用会出现以下的情况:

1)表中存在记录的转移

表中的一条记录被更改之后,记录的长度可能会增加,以至于无法在当前页存放该记录。在这种情况下,系统将会寻找一个新的页,将整个记录存放在这一新页上,而在该记录的原有页上存放记录的指针,指向新页。

系统在访问被转移的记录时,需要两次的页读取。从原有页中获得新页的指针,再找到需要的记录。如果表中存在大量的记录转移,则会由于额外的I/O操作而影响系统的性能。

2)表的数据页中存在未回收空间

表中的记录被删除或者记录被更改而长度缩短时,数据页中就会出现空闲空间。如果对表频繁进行删除或者导致记录缩短的更改,则未回收空间可能积累到一定的程度而削弱系统性能。

3)表中的扩充不连续

一个表空间可以为多个表所使用,系统在表需要时才为它分配磁盘空间。在运行一段时间之后,一个表可能包含很多个扩充,这些扩充在空间上并不连续。表的这种不连续磁盘空间使用,会严重影响表扫描等大数据量的处理。

阅读(503) | 评论(0) | 转发(0) |
0

上一篇:4.3.2 表的创建

下一篇:4.3 表的管理和维护

给主人留下些什么吧!~~