Oracle 高水位标志 : high-water mark
可以用以下几点对 high-water mark 进行理解
1. 指一个表中曾经被用过的最后一个块
2. 如果有数据被插入表, high-water mark 就移到到被使用的最后一个块
3. 如果有数据被删除, high-water mark 的位置不会变
4.high-water mark 被储存在表的段头 (segment header of the table)
5. 当对表执行全表扫描时, oracle server 被所有的块直到 high-water mark
oracle 的逻辑存储结构:表空间—— > 段—— > 区—— > 块
块 : 是粒度最小的存储单位 , 现在标准的块大小是 8K,ORACLE 每一次 I/O 操作也是按块来操作的 , 也就是说当 ORACLE 从数据文件读数据时 , 是读取多少个块 , 而不是多少行 .
区 : 由一系列相邻的块而组成 , 这也是 ORACLE 空间分配的基本单位 , 举个例子来说 , 当我们创建一个表 A 时 , 首先 ORACLE 会分配一区的空间给这个表 , 随着不断的 INSERT 数据到 A, 原来的这个区容不下插入的数据时 ,ORACLE 是以区为单位进行扩展的 , 也就是说再分配多少个区给 A, 而不是多少个块 .
段 : 是由一系列的区所组成 , 一般来说 , 当创建一个对象时 ( 表 , 索引 ), 就会分配一个段给这个对象 . 所以从某种意义上来说 , 段就是某种特定的数据 . 如 CREATE TABLE PM_USER, 这个段就是数据段 , 而 CREATE INDEX ON PM_USER(NAME),ORACLE 同样会分配一个段给这个索引 , 但这是一个索引段了 . 查询段的信息可以通过数据字典 : SELECT * FROM USER_SEGMENTS 来获得 ,
表空间 : 包含段 , 区及块 . 表空间的数据物理上储存在其所在的数据文件中 . 一个数据库至少要有一个表空间 .
所有的 oracle 段都有一个在段内容纳数据的上限,我们把这个上限称为 "high water mark"

Oracle的高水位标志(HWM)是一个表明表中已使用过的最后一个块的标记,它在数据插入时会上移,删除数据时不变。HWM存储在表的段头中,全表扫描会读取到HWM以下的所有块。HWM不会因数据删除而下降,但可通过`ALTER TABLE MOVE`或`ALTER TABLE SHRINK SPACE`等操作来调整。在自动段空间管理(ASSM)中引入了低HWM,表示已被格式化的块。
相关概念&spm=1001.2101.3001.5002&articleId=6000353&d=1&t=3&u=5fecd0e19c424bcf8cefda604b168489)
1087

被折叠的 条评论
为什么被折叠?



