返回顶部
首页 > 资讯 > 数据库 >Oracle 降低高水位线的方法
  • 409
分享到

Oracle 降低高水位线的方法

2024-04-02 19:04:59 409人浏览 独家记忆
摘要

oracle  降低高水位线的方法  高水位(HIGH WARTER MARK,HWM)好比水库中储水的水位,用于描述数据库中段的扩展方式。高水位对全表扫描方式

oracle  降低高水位线的方法 



高水位(HIGH WARTER MARK,HWM)好比水库中储水的水位,用于描述数据库中段的扩展方式。高水位对全表扫描方式有着至关重要的影响。当使用DELETE删除表记录时,高水位并不会下降,随之导致的是全表扫描的实际开销并没有任何减少。

例如,首先新建一张空表,大小占用64K,然后插入数据直到表大小变为50G,此时使用DELETE删除所有的数据并且提交,这个时候查询表的大小的时候依然是50G,这就是因为表的高水位没有释放的缘故,而在这时如果使用“SELECT * FROM TABLE_NAME;”语句来查询数据的话,那么查询过程就会很慢,因为Oracle要执行全表扫描,从高水位下所有的块都得去扫描,直到50G的所有块全部扫描完毕。曾遇到一个同事使用DELETE删除了一个很大的分区表,然后执行SELECT查询很久都没有结果,以为是数据库HANG住了,其实这个问题是由于高水位的缘故。所以,表执行了TRUNCATE操作,再次SELECT的时候就可以很快返回结果了。

释放表的高水位通常有如下几种办法:

(1)对表进行MOVE操作:ALTER TABLE TABLE_NAME MOVE;。若表上存在索引,则记得重建索引。

(2)对表进行SHRINK SPACE操作:ALTER TABLE TABLE_NAME SHRINK SPACE;,注意,在执行该指令之前必须开启行移动:ALTER TABLE TABLE_NAME ENABLE ROW MOVEMENT;。该方法的优点是:在碎片整理结束后,表上相关的索引仍然有效,缺点是会产生大量的UNDO和REDO。

(3)复制要保留的数据到临时表T,DROP原表,然后RENAME临时表T为原表。

(4)exp/imp或expdp/impdp重构表。

(5)若表中没有数据则直接使用TRUNCATE来释放高水位。


如何找出系统中哪些表拥有高水位呢?这里给出两种办法,①比较表的行数和表的大小关系。如果行数为0,而表的当前占用大小减去初始化时的大小(INITIAL_EXTENT)后依然很大,那么说明该表有高水位。②行数和块数的比率,即查看一个块可以存储多少行数据。如果一个块存储的行数少于5行甚至更少,那么说明有高水位。注意,这两种方法都不是十分准确,需要再对查询结果进行筛选。需要注意的是,在查询表的高水位时,首先需要分析表,以得到最准确的统计信息。

下面给出用于查询高水位的几个sql语句:

Segment Space and the High Water Mark

To manage space, Oracle Database tracks the state of blocks in the segment. The high water mark (HWM) is the point in a segment beyond which data blocks are unfORMatted and have never been used.

MSSM uses free lists to manage segment space. At table creation, no blocks in the segment are formatted. When a session first inserts rows into the table, the database searches the free list for usable blocks. If the database finds no usable blocks, then it preformats a group of blocks, places them on the free list, and begins inserting data into the blocks. In MSSM, a full table scan reads allblocks below the HWM.

ASSM does not use free lists and so must manage space differently. When a session first inserts data into a table, the database formats a single bitmap block instead of preformatting a group of blocks as in MSSM. The bitmap tracks the state of blocks in the segment, taking the place of the free list. The database uses the bitmap to find free blocks and then formats each block before filling it with data. ASSM spread out inserts among blocks to avoid concurrency issues.

Every data block in an ASSM segment is in one of the following states:

  • Above the HWM

    These blocks are unformatted and have never been used.

  • Below the HWM

    These blocks are in one of the following states:

    • Allocated, but currently unformatted and unused

    • Formatted and contain data

    • Formatted and empty because the data was deleted

Figure 12-23 depicts an ASSM segment as a horizontal series of blocks. At table creation, the HWM is at the beginning of the segment on the left. Because no data has been inserted yet, all blocks in the segment are unformatted and never used.

Figure 12-23 HWM at Table Creation

Oracle  降低高水位线的方法
Description of "Figure 12-23 HWM at Table Creation"

段空间和高水位标记

oracle数据库通过跟踪段中的块状态来管理空间。高水位标记(HWM)是段中的一个点,超过该点的数据块是未格式化和未使用过的。

MSSM使用空闲列表来管理段空间。在创建表时,段中的块并未被格式化。当一个会话初次向表中插入行时,数据库将搜索空闲列表来查找可用的块。如果数据库未找到可用的块,那么它会预格式化一组块,并将它们放置在空闲列表中,并开始将数据插入到块中。在MSSM中,全表扫描会读取HWM之下的所有块。

ASSM不使用空闲列表,所以必须以不同的方式管理空间。当会话初次向表中插入数据时,数据库只格式化一个单一位图块,而不像在MSSM中那样预格式化一组块。位图取代了空闲列表,用于跟踪在段中的块的状态。数据库使用位图来查找可用的块,然后在往块写入数据之前将其格式化。ASSM将插入操作分散到多个块,以避免并发问题。

在一个ASSM段中的每个数据块处于以下状态之一:

l 在HWM之上

    这些块是未格式化的,且从未使用过。

l 在HWM之下

这些块处于以下状态之一:

u 已分配,但当前未格式化且未使用

u 已格式化且包含数据

u 已格式化且为空,因为数据已被删除

图12-23将一个ASSM段描述为一系列水平的块。在创建表时,HWM在左侧段的开头。因为还未插入数据,段中的所有块都还是未格式化且从未使用过。

图将12-23在创建表时的HWM




您可能感兴趣的文档:

--结束END--

本文标题: Oracle 降低高水位线的方法

本文链接: https://lsjlt.com/news/48534.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle 降低高水位线的方法
    Oracle  降低高水位线的方法  高水位(HIGH WARTER MARK,HWM)好比水库中储水的水位,用于描述数据库中段的扩展方式。高水位对全表扫描方式...
    99+
    2024-04-02
  • 降低高水位线
    1、建立初始化数据演示数据表中的高水位的变化 (1)、建立用户和表SYS@odb>create user test8 identified by test8;SYS@odb>grant...
    99+
    2024-04-02
  • 数据库中如何降低高水位
    这篇文章主要为大家展示了“数据库中如何降低高水位”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“数据库中如何降低高水位”这篇文章吧。 降低高水位方法1. mov...
    99+
    2024-04-02
  • oracle 回收高水位线
    select  round((1-a.used/b.num_total)*100,0)  percent from  (SELECT COUNT (DISTI...
    99+
    2024-04-02
  • 【TABLESPACE】怎么去降低数据文件的高水位呢(BLOCK_ID)
    http://blog.itpub.net/29487349/viewspace-2143418/ 这边文章说了怎么收缩表空间,那么有的时候会出现以下情况,也就是我们查询表空间空间空闲很多,但执...
    99+
    2024-04-02
  • Oracle 高水位线详解(HWM)
    HWM:高水位线, 可用空间与已用空间的分界线,标记着段空间使用情况。 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的...
    99+
    2024-04-02
  • ORACLE高水位表的查找方法
      高水位的介绍 数据库运行了一段时间,经过一些列的删除、插入、更改操作有些表的高水位线就有可能和实际的表存储数据的情况相差特别多,为了提高检索该表的效率,建议对这些表进行收缩; ...
    99+
    2024-04-02
  • ORACLE解决高水位线问题
    --方法一.ALTER  TABLE  table_name MOVE ;--对表重建ANALYZE  TABLE  table_name COMPUTE ...
    99+
    2024-04-02
  • 降低网站跳出率的方法有哪些
    本篇内容主要讲解“降低网站跳出率的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“降低网站跳出率的方法有哪些”吧!  一、创造优质的内容  很多网站跳出率高,是因为用户搜索关键词进来后没...
    99+
    2023-06-10
  • nodejs高版本降为低版本的详细解决方案
    1.首先通过控制面板应用卸载当前环境下的Node.js相关安装,并清理磁盘残存的文件夹等文件 2.下载nvm来管理node版本        ...
    99+
    2022-12-09
    nodejs怎么降低版本 node怎么降低版本 node版本
  • react-router-dom 降低版本的两种方法详解
    目录前言1. 使用 npm 命令降低到指定版本2.手动修改 package.json 文件,然后 npm install前言 react-router-dom 如今已经升级到了 V6...
    99+
    2022-12-24
    react-router-dom版本降低 react-router-dom版本
  • 优化代码:降低回流和重绘的方法
    篇一:精简代码实现:减少回流和重绘的技巧 在开发网页应用时,优化性能是一个重要的任务。其中,减少页面回流(reflow)和重绘(repaint)是提高网页性能的关键点之一。本文将分享一些技巧和具体的代码示例,帮助你更好地减少回流...
    99+
    2024-01-26
    可以减少回流次数
  • 电脑显卡温度高怎么办 降低显卡温度方法介绍
    当电脑显卡温度过高时,可以采取以下方法来降低显卡温度:1. 清理电脑内部:显卡周围的灰尘和杂物可能导致散热不良,使用吹气罐或者吸尘器...
    99+
    2023-08-17
    电脑
  • 降低vue-router版本的2种解决方法实例
    目录1 引言2 方法3 结语1 引言 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。当我们在官网中安装路由或者安装时不注明版...
    99+
    2024-04-02
  • 美国服务器降低延迟的方法有哪些
    美国服务器降低延迟的方法有:1、选择美国西海岸服务器机房,拉近国内用户访问距离提高速度;2、选择BGP线路机房,自动匹配最优路径降低延迟;3、确保网络带宽充足,使美国服务器稳定性更好。具体方法如下:选择美国西海岸服务器机房距离会影响服务器的...
    99+
    2024-04-02
  • 如何解析Oracle 高水位(HWM)对select性能的影响
    这篇文章将为大家详细讲解有关如何解析Oracle 高水位(HWM)对select性能的影响,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 不知道大家有没有...
    99+
    2024-04-02
  • SpringIOC能降低耦合的问题分析及解决方法
    目录一、传统方式创建对象二、接口编程三、工厂方法四、反射五、Spring IOC总结有同学在学习 Spring 框架中可能会问这样的问题,为什么通过依赖注入就可以降低代码间的耦合呢?...
    99+
    2024-04-02
  • 亚马逊服务器怎么降低存储速度的方法
    使用云存储服务:亚马逊的云存储服务Amazon S3可以自动化数据备份、重复数据删除和同步,从而大大降低存储成本。 使用虚拟化技术:虚拟化可以将多个物理服务器合并为一个虚拟服务器,从而减少硬件资源的消耗,并提高存储效率。 优化数据库:对于...
    99+
    2023-10-27
    亚马逊 速度 服务器
  • 笔记本Win7低电量时自动关机的设置方法(降低硬盘损耗)
      通常Win7笔记本低电量的时候会有提示,然后进入自动休眠状态,这样会对硬盘造成一定的损害,设置成低电量时自动关机的话能降低硬盘损耗,下面小编就给大家介绍下Win7系统低电量时自动关机的设置方法。   步骤   1、点...
    99+
    2023-06-17
    Win7 低电量 自动关机 设置 方法 硬盘
  • win7屏幕亮度快速调节的方法(可降低眼疲劳)
      每天长时间盯着电脑,容易造成眼疲劳,电脑屏幕亮度的不合适也会引起眼睛的不适,在win7系统下,如何调节屏幕亮度下面介绍快速调节的方法。   1、开始-控制面板。 win   2、点击 系统和安全。 win 7   3...
    99+
    2023-06-10
    win7 屏幕 亮度 方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作