数据块概述

Oracle 数据库以数据块(也称为 Oracle 块或页)为单位,来管理数据库数据文件中的逻辑存储空间。数据块是数据库 I/O 的最小单位

数据块和操作系统块

在物理级别,存储在磁盘文件中的数据库数据由操作系统块组成。操作系统块是操作系统可以读取或写入的最小数据单位。相比之下, Oracle 块是一个逻辑存储结构,其大小和结构对操作系统是透明的。

图 12-5显示操作系统块与数据块的大小可能有所不同。数据库按数据块(而不是按操作系统块)的倍数来请求数据

这里写图片描述

当数据库请求一个数据块时,操作系统将此操作转换为对永久存储数据的多个请求。数据块与操作系统块的逻辑分离具有以下含义:

应用程序不需要确定磁盘上的数据的物理地址

数据库数据可以在多个物理磁盘上进行条带化或镜像

数据库块大小

每个数据库都有一个数据库块大小。DB_BLOCK_SIZE 初始化参数在数据库被创建时设置其数据块大小。此大小是SYSTEM和SYSAUX表空间的大小,并且是其它表空间的默认大小。不能更改数据库的块大小,除非重新创建数据库。

如果尚未设置 DB_BLOCK_SIZE,则默认数据块大小特定于操作系统。数据库的标准数据块大小为 4 KB 或8 KB。如果数据块和操作系统块的大小不同,则数据块大小必须是操作系统块大小的整数倍。

表空间块大小

你可以创建其块大小不同于DB_BLOCK_SIZE设定值的表空间。当你需要将一个可移动表空间移动到一个不同的平台时,非标准的块大小非常有用。

数据块格式

每个数据块有一个格式或内部结构,使得数据库能够跟踪块中的数据和可用空间。各种数据块的格式是类似的,无论其包含的是表、 索引、或表簇数据。图 12-6 显示了一个未压缩的数据块的格式。

这里写图片描述

数据块开销

Oracle 数据库使用块开销来管理块本身。块开销不能用来存储用户数据。如图 12-6, 块开销将包括以下部分:

 块头

此部分包含关于块的一般信息,包括磁盘地址和段类型。对于事务管理块,其块头包含活动的和历史的事务信息。

每个更新块的事务都需要一个事务条目。Oracle 数据库预先在块头中为事务条目保留空间。在分配给段用于支持事务性更改的数据块中,当块头空间耗尽时,可用空间也可以容纳事务条目。事务条目所需的的空间取决于操作系统。但是,绝大多数操作系统中的事务条目需要大约 23 个字节。

 表目录

对于堆组织表,此目录包含有关其行存储在该块中的表的元数据。多个表可以将行存储在相同的块中。

 行目录

对于堆组织表,此目录描述该块的数据部分中的行的位置。

当已在行目录中分配空间后,即使在行被删除后,数据库也不会回收此空间。因此,就算某块现在是空的,但若之前曾经达到 50 行,则在行目录仍会保留已分配的100 字节。仅在块中插入新行时,数据库才会重用此空间。

块开销的某些部分是大小固定的,但总的大小是可变的。平均起来,块开销总计在 84到107字节左右。

行格式

块的行数据部分包含实际数据,如表行或索引键条目等。正如每个数据块具有一个内部的格式,每一行也有一个行格式,使得数据库能够跟踪行中的数据。

Oracle 数据库以可变长度记录形式来存储行。行包含在一个或多个行片断中。每个行片断有一个行头和列数据。

图 12-7 显示了行格式。

这里写图片描述

行头

Oracle 数据库使用行头来管理存储在块中的行片断。行头包含以下信息:

 行片断中的各列

 位于其他数据块中的各个行片断

如果整个行可以插入到一个数据块中,则Oracle数据库将该行存储为一个行片断。但是,如果所有行数据不能插入一个单一的块,或者一个更新导致现有的行不能容纳在原来的块中,则数据库将该行存储为多个行片断(请参阅”链接行和迁移行”)。数据块中通常每行只包含一个行片断。

 表簇的簇键(见”表簇概述”)

包含在一个块中的完全行至少有 3 个字节的行头。

列数据

在行头之后的列数据部分存储行中的实际数据。行片断通常按CREATE TABLE语句中列出的顺序来存储列,但这个顺序并不总是能保证的。例如,LONG类型列总是在最后。

如图 12-7所示,对行片断中的每一列, Oracle 数据库独立地存储列长度和列数据。所需的空间取决于数据类型。如果列的数据类型是可变长度的,则用于容纳一个值所需的空间可能在其数据被更新时会增长和收缩。

每一行都在数据块标头的行目录中有一个槽位。槽位指向行的开始部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值