存储结构和它们之间的关系

1. 各种类型的段
段是在数据库中占有磁盘空间的对象。这些段使用数据库的数据文件中的磁盘空间。Oracle为数据库管理和维护的方便,提供了不同类型的段,它们包括:
1) 表
表是数据库最重要的段,表是数据库中常用的存储数据的机制,在表段中所存储的数据是无序的,数据库管理员几乎无法控制某一行数据所存在一个表中的具体位置。Oracle规定一个表中的所有数据必须存放在一个表空间中。
2) 分区表
当一个表的规模很大或并行操作非常频繁时,可以把这个表划分成若干个分区,此时表已经成了逻辑的概念,而每一个分区为一个存储数据的段,每个分区的存储参数都可以单独定义。
如银行或电信使用分区表是无法避免的,如电信的客户表可能很大,此时可以将和客户表按所居住的地区分区。这样做的好处是可以改进数据库的可获得性,因为对于分区表,当一个分区损毁并不影响其他分区的操作。另外,可以通过把每个分区放在不同的磁盘上以提高并行操作的能力,从而达到改进系统效率的目的。
要使用分区表,必须使用Oracle的企业版分区表的选项。Oracle为管理和操作分区表提供了一大批的专门命令。
3) 索引
引入索引段的目的是加快基于某一特殊键(索引关键字)的查询速度,这样查询可以很快地查找到在某一表中所需数据行的准确位置。如果一个表有5个索引,那么就会有5个相应的索引段。基于某一特定的索引的所有索引记录都存储在一个索引段中。
4) 簇
如为了把相关的表合成传统的订单或发票就要进行多表的连接,如果这些表很大而且连接又是经常的操作,就可能严重影响数据库系统的效率,于是Oracle系统引入了一种称为簇的段。
可以将上面所说的订单或发票定义成簇,并定义订单号或发票号为族号。Oracle会将相同的簇号的数据行(即使是属于不同的表)也存放在同一个数据块中(也可能是相邻的数据块中)。 这样在进行这些表的连接操作时,Oracle就可以很快地把相同簇号的数据进行连接在一起。
注:簇已经不再是传统意义上的关系表了。簇能不用就不用,能少用就少用。因为这样做可以减少管理和维护的负担,也可以使跨IT平台的移植变得更加容易。
5) 索引分区
当在一个大型或超大型表上创建索引时,这个索引也可能很大,所以也可以像分区表那样,将该索引划分为若干个分区,每个索引分区为一单独的段。这样一个索引可以分布在不同的表空间上。但是每个索引分区(段)只能存放在一个表空间中。引入索引分区的主要目的也是减少输入或输出竞争。要使用索引分区也必须使用Oracle企业版分区表的选项。
6) 索引表
如果用户的查询主要是基于索引关键字,那么在索引树的叶子结点中的数据行的地址部分可以存放真正的数据,这种存储结构就称为索引表。索引表可以大大地加快基于索引关键字的查询,但是这种存储结构不适合DML操作非常频繁的表。
7) 临时段
当在SQL语句中使用了诸如ORDER BY,GROUP BY或DISTINCT等子句或关键字时,Oracle服务器就要试着在内存中进行排序。如果内存中排不下就要把中间的结果写到磁盘上,该磁盘区就是临时段。
8) 还原段
还原段在9i之前称为回滚段,它用来存放事务对数据库所作的改变。在对任何数据块或索引块改变之前,所有的原始值都将存放到还原段中。这样做不但允许用户可以还原所做的变化,而且还可以在一个进程对某一行数据进行DML操作的同时,允许其他进程对该行数据进行读操作(读的是存放到还原段的原来的数据)。
9) 大对象段
大对象(LOB)数据类型是从8i开始引入的,它是用来存储例如大的正文文档,图像或音像信息的。在一个表中可以有一列或多列LOB数据类型。如果LOB类型的列很大,Oracle服务器就会将该列的值单独存放在一个段中,该段就称为大对象段,在表中只包含了一个指向相应大对象数据的指针。
10) 嵌套表
嵌套表是一种特殊的表,该表中的某一列又由一个用户定义的表组成,即表中套表,在前面所介绍的订单或发票也可以使用嵌套表来实现。在这种情况下,被称为嵌套表的内表将被存放在另外一个段中。
注:嵌套表也不再是传统意义上的关系表了,嵌套表能不用就不用,能少用就少用。因为这样做可以减少管理和维护的负担,也可以使跨IT平台的移植变得更加容易。
11) 自举段
自举段是在数据库被创建时由sql.bsq脚本建立的,它也被称为高速缓存段。该段在实例打开数据库时帮助初始化数据字典高速缓存区,不能对自举段进行任何的查询或修改,数据库管理员也无须对该段进行任何维护。
2. 自动的段空间管理
只能在表空间一级,而且是本地管理的表空间才能开启自动的段空间管理。当一个表空间创建后,其说明应用于该表空间中所有的段。只要在创建本地管理的表空间命令中加入SEGEMENT SPACE MANAGEMENT AUTO子句,就可以完成自动的段空间管理配置,如
SQL>CREATE TABLESPACE jinlian DATAFILE ‘J:\DISK6\MOON\jinlian.dbf’ SIZE 50 M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M SEGEMENT SPACE MANAGEMENT AUTO;
查看
SQL>SELECT tablespace_name,block_size,extent_management,segment_space_management FROM dba_tablespaces WHERE tablespace_name LIKE ‘JIN%’;
最后指出的是:自动管理的段可以是普通的表,索引,也可以是索引表,还可以是大对象段。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值