数据块(Data Blocks)

■ 概述

Oracle是通过数据文件存储数据库内所有数据的,存储的最小单位是:数据块

在物理层面上,操作系统以字节为单位存储数据,每个操作系统都有一个block size

Oracle请求数据时,它请求的是Oracle的数据块,而不是物理层面上操作系统的数据块

标准块大小(standard block size)是通过初始化参数DB_BLOCK_SIZE设定的

此外,也可指定5个非标准块大小

数据块的大小应为操作系统的块大小的倍数,但同时也要确保其不要超过最大限制,以确保出现不必要的I/O

Oracle数据块是Oracle使用和分配存储的最小单位

 

■ 数据块格式(Data Block Format)

不管数据块内存储的是什么内容,包括表,索引,簇等数据内容,它们的格式都是相似的

 数据块(Data Blocks)

 

 

□ 头(Header)(Common and Variable)

包含了块的一般信息,例如块的地址和段的类型(例如,数据或索引)

 

□ 表目录(Table Directory)

包含了块中包含行的表的信息

 

□ 行目录(Row Directory)

包含了块中实际行的信息(包括行数据区域中每个行段的地址)

 

□ 块开销(Overhead)

数据块的头、表目录和行目录统称为开销

一些块开销的大小是固定的,总的块开销大小是可变的

平均而言,数据块开销的固定和可变部分总计84到107字节

 

□ 行数据(Row Data)

包含了表或索引的数据

数据是可以跨块的,比如一个数据库表的数据量较大,它的数据在一个块内不能全部存储,剩下的部分可以存储在其他数据块里


□ 空闲空间(Free Space)

空闲空间用于插入新行和更新行数据时,所需要的额外空间(例如,当行中的null更新为非null值时)

在为表或集群的数据段或索引的索引段分配的数据块中,可用空间还可以保存事务条目(transaction entry)

当在块内进行增删改查操作时,需要访问一条或多条记录的,此时是需要一个事务条目的

事务条目所需空间的大小取决于所在的操作系统,大多数操作系统中的事务条目大约需要23个字节

 

□ 空闲空间管理

空闲空间管理既可以自动,也可以手动

空闲空间可以在数据库段内被自动管理

段内空闲/已用空间使用位图跟踪,而不是空闲列表

段内空间自动管理有以下好处:

  方便使用

  更好的空间利用率,特别是对于行大小变化很大的对象

  对并发访问中的变化进行更好的运行时调整

  在性能/空间利用率方面有更好的多实例行为

在创建本地管理的表空间时,可以将段内空间管理方式为设为自动,这样在此表空间中创建的所有段都会使用该设置

上一篇:bs4模块


下一篇:Code::Blocks中如何设置代码模板?