1、数据块是oracle中最小的逻辑单位。通常是8k,可以2k,4k,8k,16k,32k。
①、数据块头(包括标准内容和可变内容 common and variable header):包内了数据块的概要信息,例如块地址(block address)及此数据块所属的段的类型(表还是索引)
②、表目录区(table directory):只要有一行数据插入到数据块,那该行数据所在的表的信息被存储在这个区域
③、行目录区(row directory):只要有一行数据插入到数据块,那该行数据的地址信息被存储在这个区域
④、可用空间区(free space):空余空间是一个块中未使用的区域,这片区域用于新行的插入和已经存在的行的更新。这个空余的多少由pctfree参数设置,如果是10,表示该块将会空余10%的空间,如果是表或者索引块,该区域还会存储事务条目,大致23字节左右
⑤、行数据区(row data):是真正存放表数据行和索引数据的地方。这部分空间占用了数据块的绝大部分空间。
这里数据块头、表目录区、行目录区被统称为管理开销(overhead),其中有些内容是固定的,有些是可变的,平均在84-107字节之间。
2、将连续的数据块组合起来,就形成了区,区是oracle分配空间的最小单位。
当用户创建一个表T时,实质上创建了一个数据段segment T
①只要segment创建成功,数据块就一定为其分配了包含若干数据块的初始数据扩展(initial extent)
②向T中插入数据,初始数据扩展中的数据块满了,此时会为这个段分配一个新增数据扩展(incremental extent),这个新增数据扩展是一个段中已有数据扩展之后分配的后续数据扩展,容量大于或等于之前的数据扩展。
③每个段的定义中都包含了数据扩展的存储参数(storage parameter),这个参数控制oracle如何为段分配可用永健,可以在create table时进行定义,如没定义,使用表空间的默认参数。
④在一个本地管理的表空间中,其所分配的数据扩展容量取决于用户创建表空间时用UNIFORM指令(固定大小)还是由AUTOALLOCATE指令(系统管理)。
对于UNIFORM扩展,默认是1M大小,用户必须确保每个数据扩展的容量至少能包含5个数据块,本地管理(locally managed)的临时表空间在分配数据扩展时只能使用UNIFORM。
对于系统管理的扩展,oracle会自行决定新增数据的扩展容量,没有规律,但是又下限,最小不能低于64KB,如数据块的容量大于等于16K,这个下限将变成1M。
3、表空间:由段组成。可分为数据表空间、系统表空间、临时表空间、回滚表空间。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




