- 浏览: 1077811 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
flyfeifei66:
list<bean> bean 中有 list&l ...
freemarker中的list -
BelloVersion:
第五种错误Remote host closed connect ...
客户端如何使用httpclient向https服务器发送数据 -
willxue:
看了半天 前面说的是错的?。。。
反向键索引的原理和用途 -
liulanghan110:
quainter 写道麻烦博主,参数为数组时,paramete ...
MYBATIS 的parameter -
quainter:
麻烦博主,参数为数组时,parameterType怎么写啊?
MYBATIS 的parameter
所有的 oracle 段都有一个在段内容纳数据的上限,我们把这个上限称为 "high water mark" 或 HWM 。这个 HWM 是一个标记,用来说明已经有多少没有使用的数据块分配给这个 segment 。
HWM 通常增长的幅度为一次 5 个数据块, 原则上 HWM 只会增大,不会缩小,即使将表中的数据全部删除, HWM 还是为原值,由于这个特点,使 HWM 很象一个水库的历史最高水位,这也就是 HWM 的原始含义,当然不能说一个水库没水了,就说该水库的历史最高水位为 0 。但是如果我们在表上使用了 truncate 命令,则该表的 HWM 会被重新置为 0 。
HWM 的一些特性
1 、 oracle 用 HWM 来界定一个段中使用的块和未使用的块。
当我们创建一个表 :A 时 ,ORACLE 就会为这个对象分配一个段 . 在这个段中 , 即使我们未插入任何记录 , 也至少有一个区 (64bit, 也就是 8 个块 ) 被分配 , 第一个区的第一个块就称为段头 (SEGMENT HEADE), 段头中就储存了一些信息 , 基中 HWM 的信息就存储在此 . 此时 , 因为第一个区的第一块用于存储段头的一些信息 , 虽然没有存储任何实际的记录 , 但也算是被使用 , 此时 HWM 是位于第 2 个块 . 当我们不断插入数据到 A 后 , 第 1 个块已经放不下后面新插入的数据 , 此时 ,ORACLE 将高水位之上的块用于存储新增数据 , 同时 ,HWM 本身也向上移 . 也就是说 , 当我们不断插入数据时 ,HWM 会不断上移 , 这样 , 在 HWM 之下的 , 就表示使用过的块 ,HWM 之上的就表示已分配但从未使用过的块 .
2 、 HWM 在插入数据时 , 当现有空间不足而进行空间的扩展时会向上移 , 但删除数据时不会往下移 .
这就好比是水库的水位 , 当涨水时 , 水位往上移 , 当水退出后 , 最高水位的痕迹还是清淅可见 .
删除数据后便存在浪费的空间, ORACLE 不会释放空间以供其他对象使用,有一条简单的理由:由于空间是为新插入的行保留的,并且要适应现有行的增长。被占用的最高空间称为最高使用标记 (HWM) 。
3 、 HWM 的信息存储在段头当中 .
HWM 本身的信息是储存在段头 . 在段空间是手工管理方式时 ,ORACLE 是通过 FREELIST( 一个单向链表 ) 来管理段内的空间分配 . 在段空间是自动管理方式时 (ASSM),ORACLE 是通过 BITMAP 来管理段内的空间分配 .
4 、 ORACLE 的全表扫描是读取高水位标记 (HWM) 以下的所有块
当用户发出一个全表扫描时, ORACLE 始终必须从段一直扫描到 HWM ,即使它什么也没有发现。该任务延长了全表扫描的时间。
5 、如何查看 HWM
select blocks, empty_blocks from dba_tables where table_name='xxx' and owner='xx';
BLOCKS 列代表该表中曾经使用过得数据库块的数目,即水线。 EMPTY_BLOCKS 代表分配给该表,但是在水线以上的数据库块,即从来没有使用的数据块 。
查看 HWM 例子 :
create table STUDENT
(
ID NUMBER primary key ,
CODE VARCHAR2 ( 10 ),
NAME VARCHAR2 ( 50 )
);
创建表后查询
select blocks, empty_blocks from dba_tables where table_name= 'STUDENT' and owner= 'TEST' ;
发现 blocks 和 empty_blocks 都为空
插入数据
insert into student values ( 1 , '0000000001' , ' 张飞 ' );
插入数据后查询
select blocks, empty_blocks from dba_tables where table_name= 'STUDENT' and owner= 'TEST' ;
发现 blocks 和 empty_blocks 都为空
收集统计信息
exec DBMS_STATS.GATHER_TABLE_STATS(ownname=> 'TEST' , tabname=> 'STUDENT' ,estimate_percent=> 100 , degree => 1 , cascade => TRUE );
收集统计信息后查询
select blocks, empty_blocks from dba_tables where table_name= 'STUDENT' and owner= 'TEST' ;
发现 blocks 为 5 、 empty_blocks 为 0 。
要特别注意使用 analyze 命令而不是 dbms_stats 包。因为 dbms_stats 包只分析对 CBO 有帮助的统计信息,对于 space usage information 这些信息对 CBO 没有帮助,是不会统计的,所以要用 analyze 。
analyze table TEST.STUDENT compute statistics ;
但其实真正的查看方式应该是通过 dump 来查看。具体做法如下:
a 、查找到该表 segment 的第一个数据块
select header_file , header_block from dba_segments where owner= 'TEST' and segment_name= 'STUDENT' ;
HEADER_FILE HEADER_BLOCK
----------- ------------
5 51
b 、 dump 该数据块 找到 trace 文件
alter system dump datafile 5 block 51;
在 udump 文件夹中找到刚刚产生的 TRC 文件,打开就能看到详细信息。
6. 如何降低HWM
a. 重建表
alter table STUDENT move ;
move 后索引会失效,需要重建索引
alter index SYS_C005160 rebuild ;
再次分析表
analyze table TEST.STUDENT compute statistics ;
b. Shrink
alter table STUDENT enable row movement ;
alter table STUDENT shrink space ;
再次分析表
analyze table TEST.STUDENT compute statistics ;
c. Truncate
truncate table STUDENT;
再次分析表
analyze table TEST.STUDENT compute statistics ;
发表评论
-
MySQL创建用户与授权
2015-12-08 19:19 1321一, 创建用户: 命令:CREATE USE ... -
数据库的拆分
2014-07-24 17:07 1123http://blog.csdn.net/bluishgl ... -
数据库事务隔离级别
2014-07-24 16:09 1050转自:http://singo107.iteye.com/b ... -
聚集索引和非聚集索引
2013-07-23 15:53 1874聚集索引和非聚集索引 聚集索引:表的物理存储按照 ... -
索引介绍
2013-07-23 14:39 1113按逻辑上来分: ... -
分区索引
2013-07-23 10:47 1256分区索引分为本地(loca ... -
反向键索引的原理和用途
2013-07-22 20:00 7302我们知道Oracle会自动为表的主键列建立索引,这个默认的 ... -
B树索引、位图索引和散列索引
2013-07-19 17:44 29833索引在数据结构上可以分为三种B树索引、位图索引和散列索引 ... -
SQLPLUS相关命令
2013-07-17 17:55 1123登录 sqlplus test/test123@MyD ... -
oracle trace文件查看
2013-07-17 17:51 1319CALL:每次SQL语句的处理都分成三个部分Parse:这步将 ... -
not in和not exists的区别
2013-05-27 13:59 2607先创建测试数据: create table test ... -
Latch (转)
2013-05-24 15:33 2504一. Latch 说明 1.1 Latc ... -
深度分析数据库的热点块问题(转)
2013-05-24 14:13 1445热点块的定义 ... -
join 条件在on和where 后的区别
2013-05-22 16:53 1283首先建两个表来测试下。 create table a( ... -
如何设计索引
2013-05-21 16:06 1637一个表建多少索引合适 ... -
重建索引
2013-05-20 23:30 1405关于索引重建,只需要记住一条: 如果它没坏,就不要 ... -
B+树索引
2013-05-20 16:10 147141.索引结构 1.1 B+树 ... -
ORACLE 循环
2012-10-12 18:39 12091、 Exit When 循环: ... -
ORACLE直方图(转)
2012-10-08 13:42 1139一. 何谓直方图: ... -
imp/exp命令导入导出数据
2012-09-25 17:30 1067导出数据: 1 将数据库TEST完全导出,用户名syste ...
相关推荐
在 Oracle 数据的存储中,可以把存储空间想象为一个水库,数据想象为水 库中的水。水库中的水的位置有一条线叫做水位线,在 Oracle 中,这条线被称为`高水位线(High-warter mark, HWM)
Oracle 高水位线 Oracle 高水位线(High Water Mark,HWM)是 Oracle 段中一个重要的概念,它标志着段中已经使用的数据块的上限。在 Oracle 中,每个段(包括表、索引等)都有一个高水位线,用于记录该段已经使用的...
内容概要:本文详细介绍了 Oracle 19c 数据库中的高水位线 (High Water Mark, HWM) 概念及其操作。首先解释了 HWM 的定义和特点,随后探讨了 HWM 对全表扫描和插入操作的影响。文中通过具体的 SQL 示例,展示了如何...
浅谈ORACLE高水位线的解决方法.pdf
简单来说,高水位线以下的空间是已经被使用过的空间,而高水位线以上的空间则是从未被使用过的新空间。 #### 高水位线的影响 - **性能问题**:随着数据的不断插入、删除和更新,高水位线以下的空间可能会变得碎片化...
对于DB2数据库管理(DMS)表空间的高水位标记(HWM)是指该表空间曾经使用到的最大数据页数。如果使用:db2 list tablespaces show detail,看到某个DMS表空间的已用页数低于高水位标记,则有可能通过如下方法降低高...
深度学习技术的出现为水位线检测提供了新思路,基于卷积神经网络(CNN)的水位检测算法可以输入一张包含水位线的静态图像,并输出水位线与检测图像左侧边界交点的预测坐标及水位线与水平方向的夹角预测值。...
《基于深度学习的水位线检测算法》这篇文章探讨了如何利用深度学习技术,特别是卷积神经网络(CNN),来实现对河道、水库等开放水域的水位监测。传统的水位监测方式依赖于特殊设备,如水位标尺或压力传感器,而这种...
设计一种基于单片机水塔水位检测控制系统。该系统能实 现水位检测、电机故障检测、处理和报警等功能,...查水位情况,以防止水量超过最高水位线;所有这一切问题的 存在,都在呼唤一种简单经济的水位控制系统的诞生。
5. 水位线识别:分析液体边缘,找到水与容器之间的交界线,即水位线。 四、高度水位检测 高度水位检测是在水位检测基础上,进一步计算出液体相对于容器底部的高度。这可能涉及到以下技术: 1. 目标坐标转换:通过...
而在水位较高时,库容的增加则相对快速。这条曲线不仅有助于确定水库在特定水位下的储水量,也为计算入库流量提供了必要的数据支持。 泄流过程是水库调节过程中非常重要的一个环节。它描述了水库在某一特定时间内的...
Oracle的Freelist(自由列表)和HWM(高水位线)是数据库管理中的关键概念,它们直接影响到数据存储的效率和SQL查询性能。本文将深入解析这两个概念及其原理,并探讨相关的性能优化策略。 首先,Oracle的Freelist是...
Oracle 12c实验-段和高水位线.pdf Oracle 12c实验-管理表空间.pdf Oracle 12c实验-管理归档重做日志.pdf Oracle 12c实验-管理控制文件.pdf Oracle 12c实验-管理数据文件和临时文件.pdf Oracle 12c实验-管理重做日志....
### Flink中的时间语义、水位线及迟到数据处理详解 #### 一、窗口的作用与分类 **1.1 窗口的作用** 在Flink的流处理中,窗口是一种重要的机制,它将无限的数据流分割成有限的片段来进行处理。这种分割使得流处理...
在做 Delete 操作的时候,即使把表中的数据都删掉了,高水位线不会降低,这样在做全表扫描的时候效率依然不会提高。 二、通过 ROWID 的表存取(Table Access by ROWID) 通过 ROWID 的表存取是 Oracle 存取单行...
8. **水库建设**:水库的水深和面积可以通过最高水位线与等高线的相对位置来计算。如题目中的8题,甲养殖场临近的水库最深可能为10-15米。 9. **山脊走向判断**:山脊的走向可以通过等高线的延伸方向来确定。如9题...
回收站功能的理解和正确使用,能避免误删除数据,而对高水位线问题的认知有助于防止数据库空间不足。此外,日常的数据文件操作管理也需要注意,以确保数据的安全性和完整性。 **日常系统运行管理注意事项**强调了...
(2) 根据极端瞬间全溃的情况计算出的流量过程,采用了近似求解计算的方法,先后计算出下游河道内最高水位线,以及最高水位出现的时间。(3) 根据上述结果,结合流溪河流域的DEM数据,一方面通过VB语言中的绘图命令,...
1. **注水注意事项**:在向电热水壶注水时,需严格遵循水位线指示,不可超过最高水位线,以防水沸腾时溢出造成烫伤或损坏电器。同时,切记不能在未关闭开关的情况下就插上电源。 2. **电源操作**:在连接电源前,...
这是因为当执行 `DEALLOCATE UNUSED` 命令时,Oracle会尝试回收高水位线之后的未使用空间,但不会减少高水位线之前的已分配空间。 #### 知识点三:位图索引在DML操作下的性能退化原因 当对具有位图索引的表进行...