hwm的影响

2024-09-07 12:38
文章标签 影响 hwm

本文主要是介绍hwm的影响,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HWM:
当需要进行全表扫描时,oracle会读取从第一个被分配的块到曾经包含数据的最高的那个块之间的每个块。这个最高块就叫做高水位线。
自动段存储管理器assm中,它会跟踪两条高水位线,一条高水位线线界定已经分配单从未保存数据的块,另一条则界定在过去某个时间点保存了数据的块。
因此很明确的说明,如果一张表上经常发生大量的删除操作,高水位线将比实际需要的位置更高。平均每个块里保存的记录数就会减少,检索记录的IO开销就会增加

==>建立测试表及插入数据
CREATE TABLE hwm_trsen (id INT PRIMARY KEY, DATA VARCHAR2(2000));

INSERT INTO hwm_trsen
            (id, DATA)
   SELECT ROWNUM, RPAD ('rownum', 1400, 'x')
         FROM DUAL
   CONNECT BY ROWNUM < 2000;

COMMIT ;

==>查询数据,查看执行计划
set autotrace on

SELECT /*  2000 rows */  MAX (DATA)
  FROM hwm_trsen;
Execution Plan
----------------------------------------------------------
Plan hash value: 3308937592
--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |     1 |  1002 |   142   (0)| 00:00:02 |
|   1 |  SORT AGGREGATE    |           |     1 |  1002 |            |          |
|   2 |   TABLE ACCESS FULL| HWM_TRSEN |  2204 |  2156K|   142   (0)| 00:00:02 |
--------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
          0  recursive calls
          1  db block gets
        448  consistent gets
          0  physical reads
          0  redo size
       1828  bytes sent via SQL*Net to client
        419  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed
==>在原有基础上升高高水位线
INSERT INTO hwm_trsen
            (id, DATA)
   WITH maxpk AS
        (SELECT /*+ materialize */
                MAX (id) maxpk
           FROM hwm_trsen)
   SELECT     maxpk + ROWNUM x, RPAD ('rownum', 1400, '') y
         FROM maxpk
   CONNECT BY ROWNUM < 100000;
   
commit;

SELECT /* 102000 rows */ MAX (DATA)
  FROM hwm_trsen;

Execution Plan
----------------------------------------------------------
Plan hash value: 3308937592
--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |     1 |  1002 |   179   (1)| 00:00:02 |
|   1 |  SORT AGGREGATE    |           |     1 |  1002 |            |          |
|   2 |   TABLE ACCESS FULL| HWM_TRSEN |   132K|   127M|   179   (1)| 00:00:02 |
--------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
          0  recursive calls
          1  db block gets
        576  consistent gets
          0  physical reads
          0  redo size
       1828  bytes sent via SQL*Net to client
        419  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed
==>不降高水位线删除数据
delete from hwm_trsen where id>2000;
commit;

==>发现查询消耗没有降低
SELECT /* After delete of 100000 */ MAX (DATA)
  FROM hwm_trsen;
Plan hash value: 3308937592
--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |     1 |  1002 |   178   (0)| 00:00:02 |
|   1 |  SORT AGGREGATE    |           |     1 |  1002 |            |          |
|   2 |   TABLE ACCESS FULL| HWM_TRSEN |  2666 |  2608K|   178   (0)| 00:00:02 |
--------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
          0  recursive calls
          1  db block gets
        576  consistent gets
          0  physical reads
          0  redo size
       1828  bytes sent via SQL*Net to client
        419  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

==>采用收缩空间降高水位线
alter table hwm_trsen enable row movement;
alter table hwm_trsen shrink space ;

 ==>发现性能降低
SELECT /* After shrink */ MAX (DATA)
  FROM hwm_trsen ;
Execution Plan
----------------------------------------------------------
Plan hash value: 3308937592
--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |     1 |  1002 |   115   (0)| 00:00:02 |
|   1 |  SORT AGGREGATE    |           |     1 |  1002 |            |          |
|   2 |   TABLE ACCESS FULL| HWM_TRSEN |  1841 |  1801K|   115   (0)| 00:00:02 |
--------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        404  consistent gets
          0  physical reads
          0  redo size
       1828  bytes sent via SQL*Net to client
        419  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

INSERT INTO hwm_trsen
            (id, DATA)
   WITH maxpk AS
        (SELECT /*+ materialize */
                MAX (id) maxpk
           FROM hwm_trsen)
   SELECT     maxpk + ROWNUM x, RPAD ('rownum', 1400, 'x') y
         FROM maxpk
   CONNECT BY ROWNUM < 100000;

COMMIT ;

DELETE FROM hwm_trsen
      WHERE id > 1000 AND ROWNUM < 100000;

COMMIT ;

SELECT /* After delete of middle rows */ MAX (DATA)
  FROM hwm_trsen;
Execution Plan
----------------------------------------------------------
Plan hash value: 3308937592
--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |     1 |  1002 |  6074   (1)| 00:01:07 |
|   1 |  SORT AGGREGATE    |           |     1 |  1002 |            |          |
|   2 |   TABLE ACCESS FULL| HWM_TRSEN |   106K|   102M|  6074   (1)| 00:01:07 |
--------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
          0  recursive calls
          1  db block gets
      20772  consistent gets
          0  physical reads
          0  redo size
       1828  bytes sent via SQL*Net to client
        419  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

alter table hwm_trsen enable row movement;
alter table hwm_trsen shrink space ;

SELECT /* After 2nd shrink */ MAX (DATA)
  FROM hwm_trsen;
Execution Plan
----------------------------------------------------------
Plan hash value: 3308937592
--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |           |     1 |  1002 |   115   (0)| 00:00:02 |
|   1 |  SORT AGGREGATE    |           |     1 |  1002 |            |          |
|   2 |   TABLE ACCESS FULL| HWM_TRSEN |  1841 |  1801K|   115   (0)| 00:00:02 |
--------------------------------------------------------------------------------
Note
-----
   - dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        404  consistent gets
          0  physical reads
          0  redo size
       1828  bytes sent via SQL*Net to client
        419  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed
分析数据:
 
操作    逻辑读       
插入1999    448       
插入101998    576       
删除id>2000    576       
删除id>2000并降高水位线    404       
删除id > 1000 AND ROWNUM < 100000    20772       
删除id > 1000 AND ROWNUM < 100000并降高水位线    404    

只有当一张表包含的记录远远小于它曾经拥有的记录时,才需要重建或收缩空间(shrink space)以重置高水位线。这将减少执行全表扫描时需要读取的数据块数目。

这篇关于hwm的影响的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145085

相关文章

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

Qt中window frame的影响

window frame 在创建图形化界面的时候,会创建窗口主体,上面会多出一条,周围多次一圈细边,这就叫window frame窗口框架,这是操作系统自带的。 这个对geometry的一些属性有一定影响,主要体现在Qt坐标系体系: 窗口当中包含一个按钮,这个按钮的坐标系是以父元素为参考,那么这个参考是widget本体作为参考,还是window frame作为参考,这两种参考体系都存在

HTTP 状态码:它们如何影响 SEO?

HTTP状态码在网站的功能和性能中扮演着重要角色,但它们的影响不仅限于技术层面。当涉及到SEO时,理解HTTP状态码变得至关重要。 这些状态码对于搜索引擎来说非常重要,因为它们可以影响Google如何有效地抓取和索引您的页面。 在本文中,我们将探讨: 什么是HTTP状态码(以及它们如何工作)。单个状态码如何影响您的SEO努力。如何检查(和修复)您网站上的HTTP状态码。 什么是HTTP状态

css-transform对position:fixed影响

在betterScroll尝试使用position:fixed固定首列,然而并不能实现固定。因为 bscroll / iscroll 是基于 transform 属性实现滚动的, 所以 iscroll 会通过实时修改元素的 transform 属性以达到滚动的效果。父元素如果存在 transform 属性,子元素的 position: fixed 属性无效。betterScroll有个 useTr

影响时延抖动的因素

影响时延抖动的因素主要包括排队时延、可变的分组大小和IP网络路由状态频繁变化。‌ ‌排队时延‌:当数据包通过路由器或交换机等网络设备时,如果设备处理能力不足,数据包需要在队列中等待处理,这会消耗一定的时间,从而导致排队时延。这种时延的不确定性是时延抖动的一个重要来源。   ‌可变的分组大小‌:数据包的传输时间不仅与数据包的大小有关,还与网络设备的处理能力、传输介质的特性等因素有关。当数据包大

如何看待AI技术对人们生活的影响?

人工智能(AI)技术对人们生活的影响是多方面的,既有积极的一面,也存在一些需要关注的问题。以下是对AI技术在生活中影响的综合看法:   积极影响:   提高效率:AI技术在各行各业中的应用大大提高了工作效率。例如,在制造业中,AI可以优化生产流程,减少资源浪费;在服务业中,聊天机器人可以提供24小时客户服务,提高用户体验。   增强能力:AI扩展了人类的能力,使得一些复杂和危险的任务可以

影响关键词排名稳定的因素有哪些?

网站上线了很久关键词还是没有出现排名,很多站长都非常关心这个问题,为什么我正常优化的网站就是没有排名呢?下面,曾庆平SEO为大家分析一下影响关键词排名的因素有哪些,快看一下自己的网站是不是出现了以下问题。 一、网站内部结构 首先网站一定要充分考虑两个方面,一个是用户,一个就是搜索引擎。 (1)用户喜欢什么样的网站?网站主题是不是够明确?用户在进入网站后如果在几秒内看不懂网站的主题就会退

影响画布微信小程序canvas及skyline和webview用户界面布局的关键流程

影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 目录 影响微信小程序画布canvas及skyline和webview用户界面布局的关键流程 一、微信小程序canvas开发流程 1.1、官方指南 1.2、客制化开发 第一步:在 WXML 中添加 canvas 组件 第二步:获取 Canvas 对象和渲染上下文 第三步 画布#ID选择器执行回调——

基于AI+多技术融合在流域生态系统服务评价、水文水生态分析、碳收支、气候变化影响、制图等领域中的实践应用

流域生态系统服务在环境保护与资源管理中具有不可替代的重要性。随着全球气候变化和人类活动对自然环境的压力日益增大,流域生态系统的稳定性和健康状况面临严峻挑战。水资源短缺、洪水频发、水质污染、生物多样性减少等问题,正在威胁流域内及其下游区域的人类社会福祉。因此,对流域生态系统服务的科学评估和有效管理不仅能够提升生态系统的抗逆性和恢复力,还能为区域可持续发展提供坚实的环境保障。通过GIS+技术进行的流域

MySQL 迁移中 explicit_defaults_for_timestamp 参数影响

前言 最近在做数据迁移的时候,使用的是云平台自带的同步工具,在预检查阶段,当时报错 explicit_defaults_for_timestamp 参数在目标端为 off 建议修改 on,有什么风险呢?在此记录下。 测试对比 MySQL 默认情况下 explicit_defaults_for_timestamp = 0 我们对比一下看看。 explicit_defaults_for_tim