Oracle数据库表存储基本概述

Oracle数据库表存储基本概述

Oracle 数据库使用表空间中的数据段保存表数据。段包含由数据块组成的扩展盘区。

表数据段位于表所有者的默认空间中,或CREATE TABLE 语句中所指定的表空间中。

表组织

默认情况下,表按堆的形式来组织数据,这意味着数据库将行存放在最适合他们的位置,而不是按用户指定的顺序来存放。因此,堆组织表是一个无序的行的集合。当用户往其中添加行时,数据库将行置于在数据段中第一个可用的空闲空间。不能保证行按照插入它们的顺序进行检索。

列顺序

列的顺序对于表中的所有行都是相同的。通常,数据库按它们被列在CREATE TABLE 语句中的列顺序来存储列,但这个顺序是不保证的。例如,如果表中有 LONG 类型的列,那么数据库总是将其存储到行中的最后一列。此外,如果向表中添加一个新列,则新列将被存储为最后一列。

与常规列不同,表可以包含虚拟列,它不占用磁盘上的空间。数据库通过计算一组用户指定的表达式或函数,在虚拟列中按需派生一个值。可以对虚拟列创建索引、 收集统计数据、并创建完整性约束。因此,虚拟列非常像非虚拟列。

行存储

数据库将行存储在数据块中。在表中,少于 256 个列的行,被存储在一个或多个行片中。

数据库尽可能将每一行作为一个行片来存储。但是,如果所有的行数据不能插入到一个单一数据块中,或者对现有的行的更新导致行溢出,则数据库使用多个行片来存储此行。

备注:表簇中的行除了包含非聚集表中的行相同的信息,还包含对其所属簇键的引用信息,后续文章单独介绍。

行片Rowids

rowid 实际上是行的一个 10 字节的物理地址。

堆组织表中的每一行都有一个在该表中唯一的 rowid,与一个行片的物理地址相对应。

对于表簇,处于同一个数据块的不同表中的行可以有相同的rowid,后续文章单独介绍。。

Oracle 数据库在内部使用 rowids 来构建索引。例如,在 B 树索引中的每个键与一个指向关联行地址的 rowid 相关联,以便快速访问。物理 rowids 提供对表行尽可能最快的访问,使数据库几乎只需单次I/O 就可以检索到行。

表压缩

数据库可以使用表压缩来消除数据块中的重复值。

对于数据高度冗余的表,压缩可以节省磁盘空间,减少数据库高速缓存中的内存使用,并在某些情况下可以加快查询执行速度。

表压缩对数据库应用程序是透明的。

Oracle 数据库支持两种类型的表压缩:基本表压缩和OLTP 表压缩

基本表压缩

这种类型的压缩只能压缩由直接路径加载插入的数据,只支持有限的数据类型和 SQL 操作。

OLTP 表压缩

这种类型的压缩用于 OLTP 应用程序,并可压缩任何 SQL 操作的数据。

数据库以行主要格式存储压缩行。一个行的所有列都存储在一起,接下来是下一行的所有列,依次类推。

重复值被替换为一个存储在块开始处的符号表短引用。因此,重新创建未压缩数据所需的信息存储在数据块本身中。

压缩的数据块看起来跟正常的数据块差不多。在常规数据块上能正常工作的大多数数据库功能,也可以在压缩的数据块上正常工作。

空值存储

空值是指在某个列中值的缺失。空值表示缺少、 未知、或不适用的数据。

在数据库中,如果在空值的前后都有数据值,则空值会被存储。在这些情况下,他们需要 1 个字节来存储列的长度(零)。

尾随的空值在行中不需要存储,因为新的行头标志着前一行中的剩余列都为空。例如,如果表的最后三列为空,则不为这些列存储数据。

相关推荐
AI-好学者6 小时前
阶段一-图数据库基础与PropertyGraph模型
数据库·rag·knowledge graph·graphrag
其实防守也摸鱼7 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
懒鸟一枚7 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
龙仔7257 小时前
SQL Server 创建只读账号完整操作(分两种场景:SSMS图形界面 + T-SQL脚本)
数据库·sql·oracle
霁月的小屋7 小时前
生产环境中的事务实践——银行系统上线记(四)
数据库
Database_Cool_8 小时前
AI 应用数据底座首选:阿里云 PolarDB 为大模型 RAG 提供一体化支撑
数据库·阿里云
玖玥拾8 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
IvorySQL9 小时前
PG 日报|社区讨论重构 pg_hba 配置文件格式
数据库·人工智能·postgresql·重构·ivorysql
逝水无殇9 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
罗政11 小时前
PDF 批量合并工具:本地 AI 自动排序、识别正文日期与合同编号
数据库·pdf·php