Oracle 高水位线和低-高水位线(High Water Mark Low High Water Mark)

news2024/11/14 13:47:18

在Oracle的逻辑存储结构中(表空间-段-区-块),数据是存在数据段中的,通常一个表就是一个数据段,而段最终又由许多数据块组成。当数据存入数据块时,需要对块进行格式化,高水位线(High Water Mark, HWM)是段中的一个点,在这个点之上的所有数据块都是未格式化且未使用的。

文章目录

  • 一、高水位线和低-高水位线的概念
  • 二、高水位线的影响
  • 三、降低表的高水位线

一、高水位线和低-高水位线的概念

在默认的自动段空间管理(ASSM)模式下,Oracle使用位图来管理段内的空间分配。HWM的从表开始创建开始,变化过程如下:

1.新建一张表(数据段)时,段内所有的数据块都是未格式化(格子代表数据块)且未使用的,此时的HWM位于段的开头:
在这里插入图片描述

2.当insert语句向表中插入数据时,Oracle会分配一部分数据块,并向右移动HWM。HWM以下的数据块代表已分配,但分配的块可能用不完,而且只有当数据真正写入某个块时(蓝色格子),才会对块进行格式化,因此引入低-高水位线(Low High Water Mark, LHWM)来表示所有已经格式化的块。
在这里插入图片描述
3.随着表内的数据不断更新和删除,数据段的状态可能变成这样:

  • LHWM之下所有数据块都是已格式化的,可能包含数据,也可能不包含数据
  • LHWM和HWM之前的数据块都是已分配,可能格式化,也可能未格式化
  • HWM之上的数据块都是未分配且未格式化的
    在这里插入图片描述

二、高水位线的影响

LHWM和HWM主要影响全表扫描的效率,当SQL查询需要进行全表扫描时,Oracle会进行如下操作:

  1. 获取LHWM的位置,读取LHWM之下的所有块,因为它们已格式化,代表使用过。
  2. 然后读取位于LHWM和HWM之间的已格式化块,避开未格式化的块。

所以全表扫描会扫描HWM下的所有已格式化的块。但从上面的图上可以看出,随着数据的更新,删除,HWM之下很多块可能已经没有数据了(碎片空间),但是依然会扫描该块。

一个极端的例子是使用delete删除表中所有记录时,HWM并不会下降,因此全表扫描的实际开销没有任何减少。这就是为什么使用delete删除一张大表后,你会发现即使表是空的或仅有很少数据,用select * from table;语句查询依然要花很长时间。

另外,当用直接路径插入(Direct-Path Insert)插入数据时(用APPEND提示或通过SQL*Loader直接路径),数据会直接从HWM之上开始写入,HWM下面的未使用的空间就浪费掉了。这个操作也会产生大量的碎片空间。

三、降低表的高水位线

当表经过长时间使用/直接路径插入/大量数据删除这些操作后,HWM之下很可能会有大量的碎片空间,在遇到全表扫描的操作时,性能低下,为了让数据更“紧凑”,需要降低表的HWM。

降低高水位线的方法有:

  • 重建(rebuild),用expdp/impdb导出、导入来完成表的重建。
  • 替换(replace),将表的数据复制到一张同结构中间表,drop源表,然后将中间表重命名为源表。
  • 截断(truncate),清空表中数据时使用truncate代替delete。
  • 移动(move),使用alter table tbl_name move;语句移动数据行,要重建索引。
  • 收缩(shrink),使用alter table enable row movement; 和 alter table tbl_name shrink space语句收- 缩表,相比移动可以保持索引有效,但会产生大量undo和redo日志。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2239392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科技资讯|Matter 1.4 标准正式发布,低功耗蓝牙助力其发展

连接标准联盟(CSA)宣布推出最新的 Matter 1.4 版本,引入了一系列新的设备类型和功能增强,有望提高包括 HomeKit 在内的智能家居生态系统之间的互操作性。 设备供应商和平台能够依靠增强的多管理员功能改善多生态系统下的用户体验&…

python练习-Django web入门

python -m pip install --user requests使用API调用请求数据 处理API响应 import requestsclass Requests:def request(self):url "https://www.toutiao.com/stream/widget/local_weather/data/?city北京"headers {"Accept": "application/json;…

元器件封装

元器件封装类型 为什么越来越多用贴片元件,而不是插件元件 为什么越来越多用贴片元件,而不是插件元件 1.体积小、质量小、容易保存和运输; 2.容易焊接和拆卸。抗震效果好。 贴片元件不用过孔,用锡少。直插元件最麻烦的就是拆卸&a…

[SaaS] 数禾科技 AIGC生成营销素材

https://zhuanlan.zhihu.com/p/923637935https://zhuanlan.zhihu.com/p/923637935

自顶向下逐步求精解决LeetCode第3307题找出第K个字符II题

3307.找出第K个字符II 难度:困难 问题描述: Alice和Bob正在玩一个游戏。最初,Alice有一个字符串word"a"。 给定一个正整数k和一个整数数组operations,其中operations[i]表示第i次操作的类型。 现在Bob将要求Alice按…

v-html 富文本中图片使用element-ui image-viewer组件实现预览,并且阻止滚动条

效果 导入组件 import ElImageViewer from "element-ui/packages/image/src/image-viewer"; components:{ ElImageViewer },模板使用组件 <el-image-viewerv-if"isShowPics":on-close"closeViewer":url-list"srcList"/>定义两…

Redis - 哨兵(Sentinel)

Redis 的主从复制模式下&#xff0c;⼀旦主节点由于故障不能提供服务&#xff0c;需要⼈⼯进⾏主从切换&#xff0c;同时⼤量 的客⼾端需要被通知切换到新的主节点上&#xff0c;对于上了⼀定规模的应⽤来说&#xff0c;这种⽅案是⽆法接受的&#xff0c; 于是Redis从2.8开始提…

使用wordpress搭建简易的信息查询系统

背景 当前有这样的一个需求&#xff0c;要实现让客户能够自助登录系统查询一些个人的信息&#xff0c;市面上没有特别符合我的需求的产品&#xff0c;经过一段时间的研究&#xff0c;想出了一个用wordpress实现简易信息查询系统&#xff0c;有两种方式。 方式一&#xff1a;使…

探索 Python HTTP 的瑞士军刀:Requests 库

文章目录 探索 Python HTTP 的瑞士军刀&#xff1a;Requests 库第一部分&#xff1a;背景介绍第二部分&#xff1a;Requests 库是什么&#xff1f;第三部分&#xff1a;如何安装 Requests 库&#xff1f;第四部分&#xff1a;Requests 库的基本函数使用方法第五部分&#xff1a…

【青牛科技】 GC6153——TMI8152 的不二之选,可应用于摇头机等产品中

在电子工程领域&#xff0c;不断寻求性能更优、成本更低的解决方案是工程师们的永恒追求。今天&#xff0c;我们要为广大电子工程师带来一款极具竞争力的产品 —— GC6153&#xff0c;它将成为 TMI8152 的完美替代之选。 一、产品背景 随着科技的飞速发展&#xff0c;电子设备…

基于yolov8、yolov5的番茄成熟度检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要&#xff1a;番茄成熟度检测在农业生产及质量控制中起着至关重要的作用&#xff0c;不仅能帮助农民及时采摘成熟的番茄&#xff0c;还为自动化农业监测提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的番茄成熟度检测模型&#xff0c;该模型使用了…

艾体宝干货丨微突发流量检测与分析:IOTA让网络监控更精准

网络流量中的微突发问题常常难以察觉&#xff0c;但它们可能对网络性能产生显著影响。这篇文章深入探讨了如何利用IOTA来捕捉和分析微突发&#xff0c;帮助您快速有效地解决网络中的突发流量问题。 什么是微突发&#xff08;Microburst&#xff09;流量&#xff1f; 微突发是…

论文略读: ALPAGASUS: TRAINING A BETTER ALPACA WITH FEWER DATA

ICLR 2024 1 背景 大模型通常需要在有监督指令数据集上进行指令微调来加强指令遵循能力 但是广泛使用的数据集包含许多具有不正确或不相关响应的低质量样本&#xff0c;这对大模型微调具有误导性——>论文提出了一种简单有效的数据选择策略&#xff0c;使用ChatGPT自动识别…

【Android】ANR监控治理技术方案

一、 背景 1、 bugly针对crash监控做的比较好&#xff0c;但是对anr监控&#xff0c;早期版本监听 /data/anr 目录的变化可以拿到数据&#xff0c;但是现在高版本已经没有权限监听此目录&#xff0c;当前数据非常少&#xff0c;结合历次数据来看对我们解决ANR问题没有任何帮助…

FreeRTOS学习11——时间片任务调度

时间片任务调度 时间片任务调度 时间片任务调度 概念&#xff1a;时间片调度主要针对优先级相同的任务&#xff0c;当多个任务的优先级相同时&#xff0c;任务调度器会在每一次系统时钟节拍到的时候切换任务&#xff0c;也就是说 CPU 轮流运行优先级相同的任务&#xff0c;每个…

怎么把模糊照片变清晰?4种方法助你修复图片清晰度!

在我们的日常生活中&#xff0c;模糊的图片常常成为影响视觉体验的一大障碍&#xff0c;无论是由于时间久远导致老照片分辨率降低&#xff0c;还是拍摄时因手抖造成的画面模糊&#xff0c;都会让我们的图片质量大打折扣。为了帮助你解决这一困扰&#xff0c;我们为你整理了四种…

Pytorch学习--神经网络--完整的模型验证套路

一、选取的图片 全部代码依托于该博客 二、代码&#xff08;调用训练好的模型&#xff09; import torch import torchvision from PIL import Image from model import *img_path "dog.png" image Image.open(img_path)print(image.size)transform torchvisi…

力扣 LeetCode 454. 四数相加II(Day3:哈希表)

解题思路&#xff1a; 使用map 四个数组两两一组 前两个数组的各个值遍历相加&#xff0c;和为key&#xff0c;出现的次数为value 后两个数组的各个值遍历相加&#xff0c;如果该值的负数能在map中找到&#xff08;表示能抵消为0&#xff0c;符合题意四数之和为0&#xff0…

期权懂|交易股票期权该怎么操作?又该如何开户?

期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 交易股票期权该怎么操作&#xff1f;又该如何开户&#xff1f; 一、交易股票期权主要包括以下几个步骤&#xff1a; &#xff08;1&#xff09;选择交易平台‌&#xff1a; 选择…

Unity类银河战士恶魔城学习总结(P124 CharacterStats UI玩家的UI)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了玩家属性栏&#xff0c;仓库&#xff0c;物品栏UI的制作 UI_StatSlot.cs 这个脚本是用来在Unity的UI上显示玩家属性&#xf…