一. 准备知识:ORACLE 的逻辑存储管理.
ORACLE 在逻辑存储上分 4 个粒度: 表空间, 段, 区 和 块.
1.1 块: 是粒度最小的存储单位,现在标准的块大小是 8K,ORACLE 每一次 I/O
操作也是按块来操作的,也就是说当 ORACLE 从数据文件读数据时,是读取多少个
块,而不是多少行. 每一个 Block 里可以包含多个 row.
1.2 区: 由一系列相邻的块而组成,这也是 ORACLE 空间分配的基本单位,举个
例子来说,当我们创建一个表 Dave 时,首先 ORACLE 会分配一区的空间给这个表,
随着不断的 INSERT 数据到 Dave,原来的这个区容不下插入的数据时,ORACLE 是
以区为单位进行扩展的,也就是说再分配多少个区给 Dave,而不是多少个块.
1.3 段: 是由一系列的区所组成, 一般来说, 当创建一个对象时(表,索引),就
会分配一个段给这个对象. 所以从某种意义上来说,段就是某种特定的数据.如
CREATE TABLE Dave,这个段就是数据段,而 CREATE INDEX ON Dave(NAME), ORACLE
同样会分配一个段给这个索引,但这是一个索引段了.查询段的信息可以通过数
据字典: SELECT * FROM USER_SEGMENTS 来获得.
1.4 表空间: 包含段,区及块.表空间的数据物理上储存在其所在的数据文件
中.一个数据库至少要有一个表空间.
表空间(tableSpace) 段(segment) 盘区(extent) 块(block) 关系
http://blog.csdn.net/tianlesoftware/archive/2009/12/08/4962476.aspx
当我们创建了一个表,即使我没有插入任何一行记录, ORACLE 还是给它分配
了 8 个块. 当然这个跟建表语句的 INITIAL 参数及 MINEXTENTS 参数有关. 如:
STORAGE
(
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
);
也就是说,在这个对象创建以后,ORACLE 至少给它分配一个区,初始大小是
64K,一个标准块的大小是 8K,刚好是 8 个 BLOCK.
Oracle Table 创建参数 说明
http://blog.csdn.net/tianlesoftware/archive/2009/12/07/4954417.aspx
二. 高水线(High Water Mark)
评论0