table/segment/extent/block之间关系

来源:互联网 发布:c 中级程序员面试题 编辑:程序博客网 时间:2024/05/29 15:04

这些都是Oracle存储的逻辑结构。
BLOCK是Oracle存储的最基本单位,由DB_BLOCK_SIZE制定,通常为8KB,也可以定义为2KB,4KB,16KB,32KB,64KB等,磁盘最小存储单位是sector(512BYTE),Oracle数据块由连续的sector组成,Oracle读写单位是数据块,应尽量设置BLOCK大小为磁盘数据块大小的整数倍,避免IO浪费
连续的数据块组成一个分区extent,便于空间管理,包括空间的分配和释放。段的空间是以分区为单位分配的。提高了分配空间的效率,但是带来了空间碎片。
Oracle每个表或索引都会对应这一个段。如果使用分区表或者分区索引,每个分区(partition)都对应着一个段。每个段都有名字,即对象(表、索引)的名字,段由extent组成,但不要求连续。

一个table至少是一个segment,如果分区表,则每个分区是一个segment,table可以看成是一个逻辑上的概 念,segment可以看成是这个逻辑概念的物理实现;segment由一个或多个extents组成,segment不可以跨表空间但可以跨数据文件;extent由多个连续的blocks组成,不可以跨数据文件;block由1-多个os块组成,是oracle i/o的最小存储单位。

原创粉丝点击