当前位置:文档之家› 数据库的逻辑结构

数据库的逻辑结构

数据库逻辑存储结构
数据库的物理存储结构对应一系列的物理文件,这部分主要描述的是数据存储的实际位置,不过数据如果存储,是以什么结构存储到数据文件中,则取决于数据库的逻辑存储结构.
Oracle数据库在执行操作时,并不是以数据文件为单位,而是从逻辑上定义出一组结构,操作的数据可以一步步细分不同的存储单元,oracle 操作数据的过程,实际上就是对这些不同级别的存储单元进行维护和管理的过程.
逻辑存储概述
--块(block)块是逻辑存储结构中最小存储单位,所有数据的存储都是以块为单位进行.初始化参数文件中BLOCK_SIZE来指定一个块的大小,也就是说oracle的块大小在数据库创建时指定,一经指定就无法修改,除非重建数据库.
--区(extent) 区是oracle数据库的最小分配单位,由一组连续的块组成,这些块在物理上可能并不连续(也就是OS块),但是必需都存在于一个物理文件,单个区在分配时不能跨文件分配(这个文件应该是数据文件).在创建对象时,最少会为该对象分配一个区,这个区叫做初始区(initial extent) 在随着对象的不断扩展,超出初始区后,oracle就会再为其分配扩展区(incremental extent)扩展区不一定要与初始区连续存放,甚至大小也可以与初始区不同,不过扩展区也必需是由连续的块组成.
段(segment)从逻辑的角度看,段由一个或多个区组成,它是一个真正逻辑结构.
可以将段看作是对象的全部或某个部分
例如:一个普通的堆组织表(不含分区,LOB类型及索引等)那么该表就对应一个段,不管这个表中被存放多少记录,它都仍然只对应一个段,不过如果该表创建了索引,那么索引数据会存放专门的索引段,如果该表有LOB类型,LOB数据也会被存入单独的数据段.
--表空间(tablespace)从逻辑上定义,是由一个或多个段组成,从物理上定义是由一个或多个数据文件组成.表空间是oracle数据库中空间分配的最大逻辑单位,在往上就是数据库级别.
平时进行的创建对象的操作,都是在表空间一级进行.
**提示:如创建存储对象时只能指定存储到哪个表空间,而不能指定存储到更细粒度的逻辑结构,如段,区,块.也不能指定存储到某个数据文件中.
*注意*:在创建存储对象时,只需要指定存储所在的表空间(如果未指定,则存储到用户当前的默认表空间中),其他一切由oracle自动处理图: 每层结构都是一对多的关系
逻辑结构对应关系图
--块block oracle对数据文件中存储的空间进行管理就是以数据块(oracle块)为最小单位,oracle中的块在设计时是操作系统块的整倍数,可以设置的值有2KB,4KB,8KB,16KB和32KB
--在9i前oracle只有一种数据块大小, 9i后开始,oracle提供多种块大小的支持,按照类别来分,为标准块与非标准块,标准块是在创建数据库时由初始化参数 DB_BLOCK_SIZE指定,该参数一经指定之后无法修改,除非重建数据库;同事DBA在创建表空间时又可以为表空间指定与标准块不同的块大小,这就所谓的非标准块
块结构
块结构图三思 471 16-5
块结构说明
数据块头:包含块的一些属性信息,如块的物理位置,块所属的段的类型(如数据段,索引段,回滚段等)
表目录:块中存储的数据为表数据,表目录中保存关于这个表的相关信息
行目录:块中存储的数据为表数据,表目录中保存数据行的相关信息
提示:一个块中可能包含多条表记录,也可能只保存某条记录的一部分,这要视记录的长度及该块的空间分配情况而定.。

相关主题