【云原生进阶之数据库技术】第二章-Oracle-原理-4.3.3-段(Segment)结构剖析

本文详细介绍了Oracle数据库中的段(Segment)结构,包括数据段、索引段、回滚段(undo段)和临时段。数据段是与表和簇相关的磁盘空间区域,由一个或多个数据区构成。回滚段存储事务的undo数据,用于回滚和读一致性。临时段在处理查询和创建索引时使用,分配和释放频繁。段的管理涉及高水位线(HWM),在手动和自动管理模式下有所不同。通过DBMS_SPACE_ADMIN包可以管理空对象的段,优化资源使用。
摘要由CSDN通过智能技术生成

1 段(Segment)

1.1 数据段概述

        数据库中的表在表空间中都由一块单独的磁盘空间区域,称之为段。每一段依次在表空间中有一块初始的磁盘空间区域,成为初始盘区。当段使用完对应的空间时,磁盘空间的另一个单独区域——下一盘区将被启用。如果这一块区域也被使用完,那么还有另一盘区被启用。这个过程会跟随每一个表持续执行,直到整个表空间填充满为止。

        数据库中的表由一个或多个的段组成,而普通表由一个段组成,分区表则由多个段组成

        段是由多个数据区构成的,它是为特定的数据库对象(如表段、索引段、回滚段、临时段)分配的一系列数据区。段内包含的数据区可以不连续,并且可以跨越多个文件。使用段的目的是用来保存特定对象。

        数据段是与数据库对象相对应,一般一个数据库对象对应一个数据段。

        多个extent是对应一个数据段,每个数据段实际上就是数据库一个对象的代表。

        一般来说, 当创建一个对象时(表,索引),就会分配一个段给这个对象.

        一个Oracle数据库有4种类型的段:   

  1. 数据段:数据段也称为表段,它包含数据并且与表和簇相关。当创建一个表时,系统自动创建一个以该表的名字命名的数据段。   
  2. 索引段:包含了用于提高系统性能的索引。一旦建立索引,系统自动创建一个以该索引的名字命名的索引段。   
  3. 回滚段:包含了回滚信息,并在数据库恢复期间使用,以便为数据库提供读入一致性和回滚未提交的事务,即用来回滚事务的数据空间。当一个事务开始处理时,系统为之分配回滚段,回滚段可以动态创建和撤销。系统有个默认的回滚段,其管理方式既可以是自动的,也可以是手工的。   
  4. 临时段:它是Oracle在运行过程中自行创建的段。当一个SQL语句需要临时工作区时,由Oracle建立临时段。一旦语句执行完毕,临时段的区间便退回给系统。

        从dba_segments、user_segments视图中,可以比较清楚看清数据段的结构。

1.2 用户段

        单个数据段存储一个用户对象(user object)的数据。用户段(user segment)的例子包括:

  • 表、表分区、表集群;
  • LOB或LOB分区;
  • 索引或索引分区。

        Lob(Large Object)是Oracle专门用来处理半结构化和非结构化数据,它是一个大对象数据类型,可以存储超过4000字节的字符串、二进制数据。

        每个未分区的对象以及对象分区都存储在自己的段中。比如,如果一个索引有五个分区,那么该索引数据会存储在五个段中。

1.2.1 用户段创建

        默认地,当创建表、索引和分区时,数据库会创建 deferred段(deferred意为“延迟的”),仅更新数据库元数据。当用户向一张表或者一个分区插入第一行数据时,数据库才会为用户对象创建段。创建Deferred段可以避免不必要的资源开支。例如,应用安装时可能会创建成千上万的对象,占用大量的磁盘空间,但是其中许多对象根

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江中散人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值