`
csstome
  • 浏览: 1522206 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

高水位线和全表扫描

 
阅读更多

高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。高水位线对全表扫描方式有着至关重要的影响。当使用delete 操作
表记录时,高水位线并不会下降,随之导致的是全表扫描的实际开销并没有任何减少。本文给出高水位线的描述,如何降低高水位线,以及高水
位线对全表扫描的影响。

一、何谓高水位线
如前所述,类似于水库中储水的水位线。只不过在数据库中用于描述段的扩展方式。
可以将数据段或索引段等想象为一个从左到右依次排开的一系列块。当这些块中未填充任何数据时,高水位线位于块的最左端(底端)
随着记录的不断增加,新块不断地被填充并使用,高水位线随之向右移动。高水位线之上为未格式化的数据块。
删除(delete)操作之后,高水位线之下的块处于空闲状态,但高水位线并不随之下降,直到重建,截断或收缩表段。
全表扫描会扫描高水位线之下的所有块,包括空闲数据块(执行了delete操作)。

低高水位线
是在使用ASSM时的一个概念。即使用ASSM时除了高水位线之外,还包括一个低高水位线。低高水位线一定是位于高水位线之下。
当段使用MSSM管理方式时只有一种情况即只存在一个高水位线。
使用MMSM时,当HWM升高时,Oracle立即格式化所有块且有效,并可以安全读取。仅当第一次使用时完成格式化,便于安全读取数据。
使用ASSM时,当HWM升高时,Oracle并不会立即格式化所有块。仅当第一次使用时完成格式化,便于安全读取数据。
使用低高水位线可以减少当全面扫描表段时,低高水位线与高水位线之间不安全块的检查数量。即低高水位线之下的块不再检查。

二、演示高水位线与全表扫描

三、总结
1、高水线直接决定了全表扫描所需要的I/O开销
2、delete操作不会降低高水位线,高水位线之下的所有块依然被扫描
3、使用truncate 会重置高水位线到0位
4、定期使用alter table tab_name shrink space cascade 有效减少该对象上的I/O开销

四、延伸参考
收缩表段(shrink space)

dbms_xplan之display_cursor函数的使用
dbms_xplan之display函数的使用
执行计划中各字段各模块描述
Oracle 绑定变量窥探
Oracle 自适应共享游标
Oracle ROWID

分享到:
评论

相关推荐

    高水位线详解

    在 Oracle 数据的存储中,可以把存储空间想象为一个水库,数据想象为水 库中的水。水库中的水的位置有一条线叫做水位线,在 Oracle 中,这条线被称为`高水位线(High-warter mark, HWM)

    oracle高水位线

    在 Oracle 中,每个段(包括表、索引等)都有一个高水位线,用于记录该段已经使用的数据块的数量。 准备知识:ORACLE 逻辑存储管理 --------------------------- Oracle 在逻辑存储上分 4 个粒度:表空间、段、区...

    如何降低DB2的管理表空间的高水位标记

    对于DB2数据库管理(DMS)表空间的高水位标记(HWM)是指该表空间曾经使用到的最大数据页数。如果使用:db2 list tablespaces show detail,看到某个DMS表空间的已用页数低于高水位标记,则有可能通过如下方法降低高...

    基于深度学习的水位线检测算法.pdf

    2. 高精度的水位检测:深度学习技术可以对图像进行高精度的分析和处理,从而实现高精度的水位检测。 3. 强适应能力:基于深度学习的水位线检测算法可以在恶劣环境下进行水位检测,如夜间下雨、红外光源照明等情况下...

    基于深度学习的水位线检测算法_廖赟1

    《基于深度学习的水位线检测算法》这篇文章探讨了如何利用深度学习技术,特别是卷积神经网络(CNN),来实现对河道、水库等开放水域的水位监测。传统的水位监测方式依赖于特殊设备,如水位标尺或压力传感器,而这种...

    Oracle 表的扫描方式及连接方法

    Oracle 读取表中所有的行,扫描该表中高水位线(HWM, High Water Mark)以下的所有数据块。随着数据量的增加,高水位线会不断上涨,读取的数据块就会不断增加。在做 Delete 操作的时候,即使把表中的数据都删掉了,...

    oracle高水位.txt

    - **存储浪费**:如果表中存在大量的删除和更新操作,那么高水位线以下的空间可能会被标记为已使用但实际上是空闲的,这将导致存储资源的浪费。 ### Oracle高水位处理脚本分析 #### 脚本解读 1. **分析表统计信息*...

    浅谈ORACLE高水位线的解决方法.pdf

    浅谈ORACLE高水位线的解决方法.pdf

    C# opencv 液体水位检测、高度水位检测

    5. 水位线识别:分析液体边缘,找到水与容器之间的交界线,即水位线。 四、高度水位检测 高度水位检测是在水位检测基础上,进一步计算出液体相对于容器底部的高度。这可能涉及到以下技术: 1. 目标坐标转换:通过...

    水位观测记录表.xls

    水位观测记录表

    根据库容水位曲线和泄流过程反算入库流量

    标题中的“根据库容水位曲线和泄流过程反算入库流量”是一个涉及水文学、水利工程和数据分析的专题。这个小程序旨在通过已有的水库容量(库容)与水位的关系,以及泄流过程的数据,来逆向计算流入水库的水流(入库...

    防洪高水位_洪水_matlab_水利_防洪高水位_

    在水电站设计与运营中,防洪高水位是一个至关重要的概念,它涉及到水电站的安全运行、水库调度以及周边地区的洪水防控。防洪高水位是根据历史洪水资料、水文气象条件、地理环境等因素,通过专业计算确定的水库在汛期...

    flink中的时间语义和水位线及迟到处理

    ### Flink中的时间语义、水位线及迟到数据处理详解 #### 一、窗口的作用与分类 **1.1 窗口的作用** 在Flink的流处理中,窗口是一种重要的机制,它将无限的数据流分割成有限的片段来进行处理。这种分割使得流处理...

    Oracle 高水位概念(hwm)

    - **查询优化**:在执行全表扫描时,Oracle可以跳过高水位以上未使用的空间,只扫描实际包含数据的部分,提高查询效率。 - **段重组**:HWM也影响到段的重组操作,如压缩、移动或分区交换,这些操作通常会基于HWM...

    高水位(High_Water_Mark)的概念及高水位问题的解决

    有时候即便是表中数据很少,一条全表扫描的 SQL 仍然很慢,有时候表的数据很少,但是仍然占用很多空间,这些都是高水位在作怪。 2. 块(block) 块(block)是 Oracle 粒度最小的存储单元,当前标准的块大小是 8K...

    Oracle_高水位(HWM_High_Water_Mark)_说明.rar_High Water_Oracle 高水位

    Oracle数据库中的“高水位”(High Water Mark, HWM)是表空间管理的一个关键概念,它对于数据库的性能和空间利用率有着深远的影响。本文将深入解析高水位的概念、作用,以及如何调整以优化存储效率。 高水位(HWM...

    Oracle降低高水位的方法

    在Oracle数据库中,高水位(High Water Mark, HWM)是衡量表数据存储位置的一个关键概念。它标识了表中数据曾经达到的最高存储位置。每当向表中插入、更新或删除数据时,Oracle数据库会自动管理数据的存储位置。值得...

    深基坑支护锚杆在高水位砂层地质中施工工法.pdf

    而当遇到高水位砂层地质时,施工难度与风险会大大增加,因为砂层地质含水量高,承载力低,容易发生坍塌等安全事故。所以,对于在高水位砂层地质中施工锚杆,需要特别的设计和施工方法来确保工程的安全性和稳定性。 ...

    浊漳河流域高水位流砂层管道施工工艺

    【管道施工】在浊漳河流域高水位流砂层中进行管道建设是一项复杂而具有挑战性的任务。在这样的地质条件下,传统的施工方法可能难以实施,因为流砂和卵石的土质使得管沟不易成型。因此,采用了整体围堰和导流渠相结合...

Global site tag (gtag.js) - Google Analytics