`
qingfengjushi1
  • 浏览: 140875 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 高水位线的一点研究

阅读更多
最近学习了一阵子Oracle, 感觉Oracle真的是博大精深, 包括Oralce内存结构,性能调整,数据备份等都不简单, 这些对开发也很重要, 下面把做的Oracle高水位线的一些实验贴出来, 方便以后Review:
高水位线实验:
-- 创建test3表
SQL> create table test3 as
  2  select * from dba_objects where 1 = 2;
Table created
-- 查看表中分配块,区大小
SQL> SELECT segment_name, segment_type, blocks -- 分配数据块数, extents -- 分配区块数
  2    FROM dba_segments
  3   WHERE segment_name = 'TEST3'
  4  ;
SEGMENT_NAME                                                                     SEGMENT_TYPE           BLOCKS    EXTENTS
-------------------------------------------------------------------------------- ------------------ ---------- ----------
TEST3                                                                            TABLE                       8          1
TEST3                                                                            TABLE                       8          1
-- 分析表TEST3表
SQL> ANALYZE TABLE TEST3 ESTIMATE STATISTICS;
Table analyzed
-- 查询TEST3表高水位线
SQL> SELECT blocks -- 高水位线(占用TEST3表数据块数), empty_blocks -- TEST3表空闲块数, num_rows
  2    FROM user_tables
  3   WHERE table_name = 'TEST3';
    BLOCKS EMPTY_BLOCKS   NUM_ROWS
---------- ------------ ----------
         0            7          0
-- 因为未向TEST3表中插入任何数据,因此此表的高水位线为0,现向TEST3表中插入数据再观察
SQL> insert into test3
  2  select * from dba_objects;
50361 rows inserted
SQL> commit;
Commit complete
-- 重新分析表
SQL> ANALYZE TABLE TEST3 ESTIMATE STATISTICS;
Table analyzed
-- 再次查看表中分配块,区大小
SQL> SELECT segment_name, segment_type, blocks, extents
  2    FROM dba_segments
  3   WHERE segment_name = 'TEST3'
  4  ;
SEGMENT_NAME                                                                     SEGMENT_TYPE           BLOCKS    EXTENTS
-------------------------------------------------------------------------------- ------------------ ---------- ----------
TEST3                                                                            TABLE                       8          1
TEST3                                                                            TABLE                     768         21
此时看到BLOCKS数已增长到768, 也就是Oracle分配给TEST3表768个数据块,21个区
-- 再次查看TEST3表高水位线
SQL> SELECT blocks, empty_blocks, num_rows
  2    FROM user_tables
  3   WHERE table_name = 'TEST3';
    BLOCKS EMPTY_BLOCKS   NUM_ROWS
---------- ------------ ----------
       689           78      50361
已增长到689个块, 还有78个空闲块,689 + 78 = 767, 比分配的少1个数据块,是因为这一个数据块是用作segment header
-- 现将TEST3表delete,在查看高水位线
SQL> delete from test3;
50361 rows deleted
SQL> commit;
Commit complete
SQL> ANALYZE TABLE TEST3 ESTIMATE STATISTICS;
Table analyzed
SQL>
SQL> SELECT blocks, empty_blocks, num_rows
  2    FROM user_tables
  3   WHERE table_name = 'TEST3';
    BLOCKS EMPTY_BLOCKS   NUM_ROWS
---------- ------------ ----------
       689           78          0
发现此表高水位线并未减少,证明delete只是删除表中数据块的记录,但并不会使表中的高水位线下降, 在进行全表扫描时会Oracle会扫描表中高水位线下的所有数据块,
因此数据虽然被删除了,但查询时有可能还是很慢。所以在进行大表删除时应使用truncate语句,看下面实验:
SQL> truncate table test3;
Table truncated
SQL> ANALYZE TABLE TEST3 ESTIMATE STATISTICS;
Table analyzed
SQL>
SQL> SELECT blocks, empty_blocks, num_rows
  2    FROM user_tables
  3   WHERE table_name = 'TEST3';
    BLOCKS EMPTY_BLOCKS   NUM_ROWS
---------- ------------ ----------
         0            7          0
现在表中高水位下降到0了, 一点心得, 记录下来。
分享到:
评论
1 楼 quanhy5 2010-08-12  
感谢楼主的详细分析和实验,这比看书强多了!!!

相关推荐

    oracle高水位线

    Oracle 高水位线 Oracle 高水位线(High Water Mark,HWM)是 Oracle 段中一个重要的概念,它标志着段中已经使用的数据块的上限。在 Oracle 中,每个段(包括表、索引等)都有一个高水位线,用于记录该段已经使用的...

    oracle高水位.txt

    启用行移动后,当执行`ALTER TABLE SHRINK SPACE`时,Oracle会自动移动行到新的位置,从而重置高水位线。 - **收缩表空间**: ```sql ALTER TABLE table_name SHRINK SPACE; ``` 这条命令用于收缩表空间,即...

    高水位线详解

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

    浅谈ORACLE高水位线的解决方法.pdf

    浅谈ORACLE高水位线的解决方法.pdf

    Oracle 高水位概念(hwm)

    其中,“高水位”(High Water Mark,简称HWM)是Oracle数据库中的一个重要概念,它与表空间、段、区和块等存储结构密切相关。本篇文章将深入探讨Oracle高水位的概念、作用以及其在数据库操作中的影响。 高水位...

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

    Oracle数据库中的“高水位”(High Water Mark, HWM)是表空间管理的一个关键概念,它对于数据库的性能和空间利用率有着深远的影响。本文将深入解析高水位的概念、作用,以及如何调整以优化存储效率。 高水位(HWM...

    Oracle降低高水位的方法

    ### Oracle降低高水位的方法 #### 一、高水位的概念与作用 在Oracle数据库中,高水位(High Water Mark, HWM)是衡量表数据存储位置的一个关键概念。它标识了表中数据曾经达到的最高存储位置。每当向表中插入、...

    oracle 高端水位

    ### Oracle高端水位详解 在Oracle数据库管理领域,“高端水位”(High Water Mark,简称HWM)是一个关键概念,它涉及到数据库的逻辑存储结构、数据管理以及性能优化。理解Oracle的高端水位对于数据库管理员(DBA)和...

    Oracle 高性能优化全攻略

    Oracle 高性能优化全攻略Oracle 高性能优化全攻略Oracle 高性能优化全攻略Oracle 高性能优化全攻略Oracle 高性能优化全攻略Oracle 高性能优化全攻略Oracle 高性能优化全攻略Oracle 高性能优化全攻略Oracle 高性能...

    高水位(High_Water_Mark)的概念及高水位问题的解决

    Oracle 高水位(High Water Mark)概念及解决问题详解 Oracle 高水位(High Water Mark)是指 Oracle 数据库中表空间的物理存储单元中的最大使用块数,超过这个点,数据库的查询效率将受到影响。Oracle 数据库的...

    ORACLE 高可用技术PPT

    第01课 Oracle高可用概述 .pdf 第02课 RAC-原理和安装 .pdf 第03课 RAC的日常管理.pdf 第04课 RAC的性能.pdf 第05课 RAC故障分析与处理.pdf 第06课 DG 概念和配置.pdf 第07课 Data Gaurd 日常管理.pdf 第08课...

    ORACLE ERP系统的应用研究.pdf

    ORACLE ERP系统的应用研究.pdf

    Oracle高可用 RAC DG

    Oracle高可用  第一课 Oracle高可用的概述  第二课 RAC-原理和安装  第三课 RAC-日常管理  第四课 RAC-性能分析优化  第五课 RAC-故障定位和处理  第六课 Data Gaurd 概念和配置  第七课 Data ...

    高清完整版 Oracle 高性能SQL引擎剖析SQL优化与调优机制详解

    Oracle数据库是全球领先的企业级...由于是关于Oracle高性能SQL引擎的深入剖析,这本资料是数据库开发者和管理员难得的参考资料,尤其对于处理复杂业务逻辑和海量数据的场景下,掌握这些优化和调优技巧显得尤为重要。

    oracle高性能SQL调整

    介绍oracle高性能SQL的,综合介绍Oracle编程的

    Oracle 12c体系结构学习实验笔记

    Oracle 12c实验-段和高水位线.pdf Oracle 12c实验-管理表空间.pdf Oracle 12c实验-管理归档重做日志.pdf Oracle 12c实验-管理控制文件.pdf Oracle 12c实验-管理数据文件和临时文件.pdf Oracle 12c实验-管理重做日志....

    ORACLE11g研究新特性

    Oracle 11g的数据保护功能得到加强,Data Guard提供了更多的高可用性和灾难恢复选项,如逻辑 standby、redo apply 和 fast-start failover,确保业务连续性。 6. **Partitioning Enhancements** 分区功能在Oracle...

    关于Oracle数据库死锁问题的研究与讨论

    关于Oracle数据库死锁问题的研究与讨论

    oracle高级复制文档

    我整理的oracle高级复制文档,包括advanced replication初步研究,Oracle 高级数据复制案例,Oracle数据库中高级复制的功能介绍,Oracle高级复制维护中要注意的方面,使用高级复制时清除Deferred Queue的办法

    解决System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本

    标题中的“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”是一个常见的错误提示,它涉及到在.NET环境中使用Oracle数据库时遇到的问题。这个错误表明,当你试图在应用程序中使用System.Data....

Global site tag (gtag.js) - Google Analytics