阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle解决高水位线(high water mark 简称:HWM)​问题

422次阅读
没有评论

共计 2636 个字符,预计需要花费 7 分钟才能阅读完成。

高水位?(high water mark 简称:HWM)

1. 什么是高水位?(high water mark 简称:HWM)

所有的 Oracle 段(segments, 在此,为了理解方便,建议把 segment 作为表的一个同义词)都有一个在段内存放数据的上线,那么我们把这个上线成为“high water mark”或 HWM.HWM 是一个标记,用来说明已经有多少没有使用的数据块分配给了这个 segment。MWM 通常增长的幅度为一次 5 个数据块。原则上 MWM 只会增大,不会缩小。即使表中的全部数据都删除了,那么 HWM 还是原值,不会变,由于这个特点,使得 HWM 就像一个水库的历史最高水位。

简单的说就像水库里的历史最高水位。就如刚挖的水库一样里面没有一滴水,那么它的最高水位为 0. 同理在刚建的新表中由于没有一条数据,所以的高水位是 0,随着不断的往里面添加数据,进行增删操作,那么它的高水位就会上涨。当然也不是说你把表的数据删掉一半,它的高水位就会下降,因为高水位代表历史最高水位。在 Oracle 中执行 delete 删除操作不会降低高水位。执行 truncate 操作可以降低高水位,通常能把高水位降到 0.  所以为了降低高水位,能尽量使用 truncate 的就不使用 delete 操作。

——— 也就是说进行增删操作只会上涨,不会下跌!!!

2.select 特性和高水位的关系

在 Oracle 中执行 select 操作扫描的是高水位以下的全部数据块。所以不是说数据库中存放了多少数据块,就会扫描多少个数据块。现在回想以下,如果是一个新建的表,里面没有数据,那么你执行 select 扫描操作,那么高水位线基本就在 0 上,所以就没有数据块被扫描。扫描的时间就会用的很少。但是现在你往表里插入 1000 万条数据,然后再执行 delete 操作,但是由于 delete 操作不影响高水位线,所以高水位线还是原来的高水位线。

———- 所以就有人经常会说我的表中明明没有一条数据,但是执行 select 扫描怎么会那么慢呢,这个时候里面的奥秘就在于高水位线了!

3. 为什么要降低高水位?

就行水库泄洪一样,你会打开水闸把超出最高水位预警线的水消退掉。那么在 Oracle 中高水位以下存放的都是数据块,每次全表扫描的时候都会把高水位以下的全部数据库都扫描一边,如此以来就会很浪会资源,响应时间比较长。反之,如果我们把高水位降低,那么每次全表扫描的时候是不是扫描的数据块是不是就少了。

4. 为什么出来一个低 HWM?

在管理段的时候通常有两种方法:手动管理段空间(Manual Segment Space Management)和自动段空间(Automatic Segment Space Management)。

在手动管理段空间的时候,段中只有一个 HWM,但是为什么又会有一个低 HWM 呢?其实这都是因为自动管理段空间造成的。在手动管理的时候数据插入到新的数据块中,数据库块就先会被格式化然后等待数据访问,但是在自动管理中呢,数据插入到新的数据块中,数据块并没有被格式化,而是在第一次访问这个数据库块的时候才格式化这个块。所以我们又需要一条水位线,用来标示已经被格式化的快。这条线就叫做低 HWM.

一般来说,低 HWM 肯定低于 HWM.

5.HWM 数据库的操作有如下影响:

a) 全表扫描通常要读出直到 hwm 标记的所有的属于该表数据块,及时该表中没有任何数据。

b) 即使 HWM 以下有空闲的数据块,键入在插入数据是使用了 APPEND 关键字,则在插入时用用 HWM 以上的数据块,此时 HWM 会自动增大。

6. 那么如何降低高水位呢?

– 方法一.

ALTER  TABLE  table_name MOVE ;– 对表重建

ANALYZE  TABLE  table_name COMPUTE  STATISTICS ;– 统计分析

注意: 对表重建后记得重建表的所有索引

ALTER  INDEX  IDX_table_name  REBUILD ONLINE;

select index_name,status from user_indexes where table_name=upper(‘table_name’);– 查看索引状态是否生效

– 方法二.

ALTER TABLE  table_name ENABLE ROW MOVEMENT;– 激活行迁移

ALTER TABLE  table_name SHRINK SPACE;– 激活表收缩

ANALYZE  TABLE  table_name COMPUTE  STATISTICS ;– 统计分析

注意: 如果是分区表,将 row movement 设置为 enable, 有可能发生行的物理移动,行的 rowid 会变化,某一行更新时,如果更新的是分区列,并且更新后的列值不属于原来的这个分区,如果开启了这个选项,就会把这行从这个分区中 delete 掉,并加到更新后所属的分区。相当于一个隐式的触发器,但不会触发 Insert/delete 触发器。如果没有开启这个选项,更新时就会报错。

在 10g 之后,整理碎片消除行迁移的新增功能 shrink space

格式:alter table <table_name> shrink space [<null> | compact | cascade];

compact : 这个参数当系统的负载比较大时可以用,不降低 HWM。如果系统负载较低时,直接用 alter table table_name shrink space 就一步到位了

cascade : 这个参数是在 shrink table 的时候自动级联索引,相当于 rebulid index。

方法三:

CREATE TABLE table_name_1 AS SELECT  *  FROM  table_name;

TRUNCATE TABLE table_name;

INSERT INTO table_name SELECT * FROM table_name_1;

弊端: 麻烦, 耗时

方法四:

新建一个临时表,把数据复制到临时表,然后把源表 drop 掉,再把临时表重新命名为源表的名字。

弊端, 主键. 索引等依托于此表的对象需要重建

校验方法:

通过分析比对表块删除数据前后占用变化.

SELECT num_rows ,blocks, empty_blocks  FROM dba_tables WHERE owner=’SDBMGR’ AND table_name =’TABLE_NAME’;

更多 Oracle 相关信息见 Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2636字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19352
评论数
4
阅读量
8019607
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
欧洲无限速云盘免费10GB永久存储 + WebDAV部署+图床搭建,多平台联动一步到位!

欧洲无限速云盘免费10GB永久存储 + WebDAV部署+图床搭建,多平台联动一步到位!

欧洲无限速云盘免费 10GB 永久存储 + WebDAV 部署 + 图床搭建,多平台联动一步到位! 大家好,我...