`

Oralce HWM的一点分析

 
阅读更多
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

 

 

---1.创建测试表
CREATE TABLE T1 TABLESPACE TEST AS SELECT * FROM DBA_OBJECTS;

--2 查询segment 头块
SQL> SELECT HEADER_FILE,HEADER_BLOCK FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'T1';

HEADER_FILE HEADER_BLOCK
----------- ------------
         22          795

--3 DUMP segment 头块

ALTER SYSTEM DUMP DATAFILE 22 BLOCK 795;

--4 查看结尾为2492的trace文件 (ORAHOME\product\10.2.0\admin\orcl\udump)

SELECT SPID
  FROM V$PROCESS
 WHERE ADDR = (SELECT PADDR
                 FROM V$SESSION
                WHERE SID = (SELECT DISTINCT SID FROM V$MYSTAT));
SPID
------------
2492

--HWM 为 0x058008fb
Highwater::  0x058008fb   

--5 计算HWM 对应的文件编号和块
SQL> SELECT DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(TO_NUMBER('058008FB','XXXXXXXX')) AS HWM_FILEID FROM DUAL;

HWM_FILEID
----------
        22

SQL> SELECT DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(TO_NUMBER('058008FB','XXXXXXXX')) AS HWM_BLOCKID FROM DUAL;

HWM_BLOCKID
-----------
       2299
       
--6. 分析表,查看sgemnt空块的数及最大使用的Block ID
SQL> SELECT FILE_ID,MIN(BLOCK_ID),MAX(BLOCK_ID+BLOCKS) FROM DBA_EXTENTS WHERE SEGMENT_NAME='T1' GROUP BY FILE_ID;

   FILE_ID MIN(BLOCK_ID) MAX(BLOCK_ID+BLOCKS)
---------- ------------- --------------------
        22           793                 2313
        
ANALYZE TABLE T1 COMPUTE STATISTICS;

SQL> SELECT EMPTY_BLOCKS FROM DBA_TABLES WHERE TABLE_NAME = 'T1';

EMPTY_BLOCKS
------------
          14
SQL> SELECT 2313 -14 FROM DUAL;--等于HWM_BLOCKID

   2313-14
----------
      2299
--7.记录下delete数据前count(*)的统计信息
SQL> set autotrace traceonly;
SQL> select count(*) from T1;


执行计划
----------------------------------------------------------
Plan hash value: 3724264953

-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |   169   (2)| 00:00:03 |
|   1 |  SORT AGGREGATE    |      |     1 |            |          |
|   2 |   TABLE ACCESS FULL| T1   | 53176 |   169   (2)| 00:00:03 |
-------------------------------------------------------------------


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        739  consistent gets
          0  physical reads
          0  redo size
        410  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

--8 删除数据
SQL> set autotrace off;
SQL> select count(*) from T1;

  COUNT(*)
----------
     53176
     
SQL> delete T1 where rownum <= 30000;

已删除30000行。

SQL> COMMIT;

提交完成。

--9 重新dump 数据头,发现Highwater仍然是原来的值。说明DELETE 并不能使HWM下降。
ALTER SYSTEM DUMP DATAFILE 22 BLOCK 795;

Highwater::  0x058008fb

--10. 分析删除数据后,count(*)的统计信息,发现执行的消耗与删除前一样。739个逻辑读
SQL> set autotrace on;
SQL> select count(*) from T1;

  COUNT(*)
----------
     23176


执行计划
----------------------------------------------------------
Plan hash value: 3724264953

-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |   169   (2)| 00:00:03 |
|   1 |  SORT AGGREGATE    |      |     1 |            |          |
|   2 |   TABLE ACCESS FULL| T1   | 23176 |   169   (2)| 00:00:03 |
-------------------------------------------------------------------


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        739  consistent gets
          0  physical reads
          0  redo size
        410  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed


 

分享到:
评论

相关推荐

    Oracle Freelist和HWM原理及性能优化

    本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等

    Oracle Freelist和HWM原理探讨及相关性能优化

    而与FreeList密切相关的一个重用特性HWM,与sql性能密切相关,本文也作了原理分析 介绍。在原理探讨的基础上,介绍了常用的存储参数分析方法,并对所涉及的存储优化、HWM的优化和Freelist竞争优化作了说明。

    Oracle 10g HWM原理及性能优化.pdf

    Oracle 10g HWM原理及性能优化.pdf

    Oracle 10g HWM原理及性能优化

    当全表扫描时,Oracle会读取HWM下所有的块,即使这些块中有很多是空块,空块的存在,也即是表中碎片的存在,必将增加全表扫描额外的物理I/O开销及CPU开销,严重降低访问Oracle数据表的性能。通过对Oracle中关于表中...

    Oracle 高水位概念(hwm)

    NULL 博文链接:https://teddywang.iteye.com/blog/849735

    Oracle数据文件收缩实例

    而与FreeList密切相关的一个重用特性HWM,与sql性能密切相关,本文也作了原理分析介绍。在原理探讨的基础上,介绍了常用的存储参数分析方法,并对所涉及的存储优化、HWM的优化和Freelist竞争优化作了说明。 缩略语...

    HWM14高层大气风场模式

    HWM-14为HWM(水平风场模型)系列模型的最新版本,主要改进在120km以上高度,增加了赤道和极区地基630 nm FPI和GOCE卫星风场测量数据,填补了部分纬度和地方时覆盖范围上的空白。

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

    理解oracle的高水位以及如何降低, 增加空间的利用

    hwm.dll

    hwm

    ORACLE表空间的回收脚本

    针对oracle表空间收缩的操作!请仔细查看内部的说明。对于表空间过于庞大的数据库能起到回收剩余空间,并降低高水位HWM的作用

    HWM14_风场_中性大气_

    中性大气风场模型(2014):计算中性大气风场速度

    hwm93:Python和Matlab中的NASA水平风模型HWM93

    Python中的HWM93 Python≥3.6的NASA水平风模型HWM93 适用于许多Fortran编译器,包括: Gfortran≥5 英特尔ifort PGI pgf90 Nvidia flang 安装 需要诸如gfortran类的Fortran编译器。 我们使用f2py ( numpy一...

    62332440_hwm840Dsl

    62332440_hwm840Dsl

    show hwm sql

    show hwm sql sql script javascript develop

    HWM_MBUS-M13_1.08_EN_mbus_

    MBUS power line communication module

    hwm.task:最小任务库

    hwm.task 这是什么 轻量级线程池实现 特征 仅标题 使用C++标准线程 您可以指定要启动的线程数 您可以使用std::future获取要执行的任务的返回值。 样本 int main () { // ! タスクキュー // ! キューに積まれた関...

    HWM工具「HWM Tool」-crx插件

    游戏“英雄的战争与金钱”(heroeswm.ru)界面的定制和功能的扩展 目前主要特点: - 战斗列表中的人物角色旁边的OA显示,艺术品的数量和制作的存在; - 狩猎名单中的中立人的生命单位总数的图像;...

    oracle truncate恢复

    1 2 2 D:\ORACLE\ORADATA\XJ\UNDOTBS01.DBF 4096 3 3 3 D:\ORACLE\ORADATA\XJ\DRSYS01.DBF 4096 4 4 4 D:\ORACLE\ORADATA\XJ\EXAMPLE01.DBF 4096 5 5 5 D:\ORACLE\ORADATA\XJ\INDX01.DBF 4096 6 6 6 D:\ORACLE\...

    高水位线详解

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

    moeldv_C3HWM2HD

    bot_dev01

Global site tag (gtag.js) - Google Analytics