Oracle逻辑体系

来源:互联网 发布:日历js脚本 编辑:程序博客网 时间:2024/06/06 00:05

数据库由若干表空间组成,表空间由若干段组成,段由若干区组成,区又由oracle的最小单元块组成。


数据库最小单元 块 分成五个部分。

1.数据库块头:包含了数据库块的概要信息,例如块地址及此数据块所属的段段类型(比如是表还是索引)

2.表目录区:  只要有一行数据插入到数据库块中,那该行数据所在到表信息将被存储在这个区域

3.行目录区:  存放插入行到地址

4.可用空间区: 块中到空余空间。这个空余的多少是由oracle的pctfree参数设置,如果是10,表示该块将会空余10%左右的空间。如果是表或者索引块,该区域还会存储事务条目,大致有23字节左右开销。

4.行数据区: 而行数据区域就是存储具体行的信息或者索引的信息,这部分占用了数据块绝大部分的空间。


区与段

当用户创建一张表时,实质就是创建了一个数据段(segment)。只要segment创建成功,数据库就一定为其分配了包含若干数据块的初始数据扩展(区),这个新增数据扩展是一个段中已有数据扩展之后分配段后续数据扩展,容量大于或等于之前的数据扩展。

每个段的定义中都包含了数据扩展都存储参数。存储参数适用于各种类型的段。这个参数控制着oracle如何为段分配可用空间。例如,用户可以在create table 语句中使用storage 子句设定存储参数,决定创建表时为其数据段分配多少初始空间,或限定一个表最多可以包含多少数据扩展。如果用户没有为其表设定存储参数,那么表在创建时使用所在表空间段默认存储参数。


oracle段最小逻辑单位是块,最小段扩展单位是区。


表空间类型分为:系统表空间,临时表空间,回滚表空间。


  如果某表(或是某段)的记录增长特别快,因为区是数据库扩展的最小单位,而且大小是可以设置的,这个时候就可以把区的大小设置大一点。因为这样申请扩展的次数减小,性能得到提升。

 oracle表空间扩大是要格式化操作系统文件成为oracle可以识别的数据文件,需要很大开销。如果表空间足够大,其中段申请区,那都是可以识别的格式,无须格式化动作。因此我们在建表空间时,需要预先规划好表空间的大小。

 根据数据库对表更新对频繁程度,对表对pctfree做设置,免得产生行迁移,影响性能。




0 0