- 浏览: 54571 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
yvonxiao:
这个的确好用,我记得我以前是自己写了个存储过程来解决这种递归问 ...
Oracle Start With Connect By
在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。
在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。
下面我们来谈一下Oracle中Select语句的特性。Select语句会对表中的数据进行一次扫描,但是究竟扫描多少数据存储块呢,这个并不是说数据库中有多少数据,Oracle就扫描这么大的数据块,而是Oracle会扫描高水位线以下的数据块。现在来想象一下,如果刚才是一张刚刚建立的空表,你进行了一次Select操作,那么由于高水位线HWM在最低的0位置上,所以没有数据块需要被扫描,扫描时间会极短。而如果这个时候你首先插入了一千万条数据,然后再用delete语句删除这一千万条数据。由于插入了一千万条数据,所以这个时候的高水位线就在一千万条数据这里。后来删除这一千万条数据的时候,由于delete语句不影响高水位线,所以高水位线依然在一千万条数据这里。这个时候再一次用select语句进行扫描,虽然这个时候表中没有数据,但是由于扫描是按照高水位线来的,所以需要把一千万条数据的存储空间都要扫描一次,也就是说这次扫描所需要的时间和扫描一千万条数据所需要的时间是一样多的。所以有时候有人总是经常说,怎么我的表中没有几条数据,但是还是这么慢呢,这个时候其实奥秘就是这里的高水位线了。
那有没有办法让高水位线下降呢,其实有一种比较简单的方法,那就是采用TRUNCATE语句进行删除数据。采用TRUNCATE语句删除一个表的数据的时候,类似于重新建立了表,不仅把数据都删除了,还把HWM给清空恢复为0。所以如果需要把表清空,在有可能利用TRUNCATE语句来删除数据的时候就利用TRUNCATE语句来删除表,特别是那种数据量有可能很大的临时存储表。
在手动段空间管理(Manual Segment Space Management)中,段中只有一个HWM,但是在Oracle9iRelease1才添加的自动段空间管理(Automatic Segment Space Management)中,又有了一个低HWM的概念出来。为什么有了HWM还又有一个低HWM呢,这个是因为自动段空间管理的特性造成的。在手段段空间管理中,当数据插入以后,如果是插入到新的数据块中,数据块就会被自动格式化等待数据访问。而在自动段空间管理中,数据插入到新的数据块以后,数据块并没有被格式化,而是在第一次在第一次访问这个数据块的时候才格式化这个块。所以我们又需要一条水位线,用来标示已经被格式化的块。这条水位线就叫做低 HWM。一般来说,低HWM肯定是低于等于HWM的。
在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。
下面我们来谈一下Oracle中Select语句的特性。Select语句会对表中的数据进行一次扫描,但是究竟扫描多少数据存储块呢,这个并不是说数据库中有多少数据,Oracle就扫描这么大的数据块,而是Oracle会扫描高水位线以下的数据块。现在来想象一下,如果刚才是一张刚刚建立的空表,你进行了一次Select操作,那么由于高水位线HWM在最低的0位置上,所以没有数据块需要被扫描,扫描时间会极短。而如果这个时候你首先插入了一千万条数据,然后再用delete语句删除这一千万条数据。由于插入了一千万条数据,所以这个时候的高水位线就在一千万条数据这里。后来删除这一千万条数据的时候,由于delete语句不影响高水位线,所以高水位线依然在一千万条数据这里。这个时候再一次用select语句进行扫描,虽然这个时候表中没有数据,但是由于扫描是按照高水位线来的,所以需要把一千万条数据的存储空间都要扫描一次,也就是说这次扫描所需要的时间和扫描一千万条数据所需要的时间是一样多的。所以有时候有人总是经常说,怎么我的表中没有几条数据,但是还是这么慢呢,这个时候其实奥秘就是这里的高水位线了。
那有没有办法让高水位线下降呢,其实有一种比较简单的方法,那就是采用TRUNCATE语句进行删除数据。采用TRUNCATE语句删除一个表的数据的时候,类似于重新建立了表,不仅把数据都删除了,还把HWM给清空恢复为0。所以如果需要把表清空,在有可能利用TRUNCATE语句来删除数据的时候就利用TRUNCATE语句来删除表,特别是那种数据量有可能很大的临时存储表。
在手动段空间管理(Manual Segment Space Management)中,段中只有一个HWM,但是在Oracle9iRelease1才添加的自动段空间管理(Automatic Segment Space Management)中,又有了一个低HWM的概念出来。为什么有了HWM还又有一个低HWM呢,这个是因为自动段空间管理的特性造成的。在手段段空间管理中,当数据插入以后,如果是插入到新的数据块中,数据块就会被自动格式化等待数据访问。而在自动段空间管理中,数据插入到新的数据块以后,数据块并没有被格式化,而是在第一次在第一次访问这个数据块的时候才格式化这个块。所以我们又需要一条水位线,用来标示已经被格式化的块。这条水位线就叫做低 HWM。一般来说,低HWM肯定是低于等于HWM的。
发表评论
-
oracle 命令
2009-02-05 20:30 933一、ORACLE的启动和关闭 ... -
通过dbms_flashback找回误删除的数据收藏
2009-01-21 11:35 1316在使用DBMS_FLASHBACK时要首先注意以下几个事项: ... -
优化Oracle数据库性能收藏
2009-01-21 11:35 827优化策略 为了保 ... -
Oracle Start With Connect By
2009-01-21 11:33 1527Start With Connect By 是用来实现在一个 ... -
Oracle 表空间操作收藏
2009-01-21 11:32 968创建表空间: 1、递增 ... -
移动数据文件收藏
2009-01-21 11:32 689移动数据文件: 1、首先使要移动数据文件的表空间离线. ... -
Oracle 死锁会话处理收藏
2009-01-21 11:31 1089--查询所有的死锁: SELECT * FROM V$LOCK ... -
Oracle 9i 打开autotrace on 查看执行计划收藏
2009-01-21 11:31 12871.创建表,通过utlxplan脚本 SQL> @? ... -
如何启用sqlplus的AutoTrace功能收藏
2009-01-21 11:31 806通过以下方法可以把Autotrace的权限授予Everyone ... -
user和schema的区别:
2009-01-21 11:30 967说穿了其实user是控制权限的,而schema是个容器,非所有 ... -
解决Oracle数据文件和日志文件丢失的问题收藏
2009-01-21 11:29 2030今天不小心误删除了数据库的数据文件和日志文件,在启动数据库时报 ... -
深入了解oracle的高水位(HWM)收藏
2009-01-21 11:26 2234说到HWM,我们首先要简要的谈谈ORACLE的逻辑存储管理.我 ... -
ORACLE 日志文件相关查询收藏
2009-01-21 11:25 11531.查询系统使用的是哪一组日志文件: select * fro ... -
ORACLE热备份恢复手册收藏
2009-01-21 11:22 2270概要 1.1. 本文的目的 为了模拟测试oracle热备份的 ... -
(转)windows命令行下启动oracle
2009-01-21 09:56 1463--总结启动命令如下: lsnrctl [start|stop ... -
小议分析函数中排序对结果的影响(一)
2009-01-12 13:24 830分析函数中经常会包括O ... -
ORACLE10g新特性——全局HASH分区索引
2009-01-12 13:23 1702在10g以前,Oracle的全局索引分区方法只有一种,即范围分 ... -
深入认识Oracle Supplemental logging
2008-12-22 18:35 3105对于有过逻辑standby,streams搭建体验的朋友,肯定 ... -
深入分析Oracle数据库日志文件
2008-12-22 15:19 951深入分析Oracle数据库日志文件 作者:程永新 发文时间: ... -
oracle 介绍
2008-09-20 21:04 1093第二章 架构 ORACLE架构由3部分组成: 文件, 内存结 ...
相关推荐
在 Oracle 数据的存储中,可以把存储空间想象为一个水库,数据想象为水 库中的水。水库中的水的位置有一条线叫做水位线,在 Oracle 中,这条线被称为`高水位线(High-warter mark, HWM)
理解oracle的高水位以及如何降低, 增加空间的利用
NULL 博文链接:https://teddywang.iteye.com/blog/849735
对于DB2数据库管理(DMS)表空间的高水位标记(HWM)是指该表空间曾经使用到的最大数据页数。如果使用:db2 list tablespaces show detail,看到某个DMS表空间的已用页数低于高水位标记,则有可能通过如下方法降低高...
本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等
针对oracle表空间收缩的操作!请仔细查看内部的说明。对于表空间过于庞大的数据库能起到回收剩余空间,并降低高水位HWM的作用
HWM(High Water Mark)是表中已经使用过的存储空间与未使用过的存储空间之间的...通过对Oracle中关于表中HWM的原理及性能优化问题的讨论,针对HWM下的碎片问题提出相关的优化策略,并对其空间重组前后进行性能对比测试。
本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及 Oracle段区块管理的原理,FreeList算法等。而与FreeList密切相关的一个重用特性HWM,与sql性能密切相关,本文也作了原理分析 介绍。在原理探讨...
Oracle 10g HWM原理及性能优化.pdf
内容表空间高水位标记(HWM)为什么要降低高水位标记在9.7以前如何降低高水位标记9.7降低高水位标记的新功能总结参考资料表空间高水位标记(HWM)高水位标记是一个应用广泛的术语,在很多的场合都会使用到,一般用以...
HWM-14为HWM(水平风场模型)系列模型的最新版本,主要改进在120km以上高度,增加了赤道和极区地基630 nm FPI和GOCE卫星风场测量数据,填补了部分纬度和地方时覆盖范围上的空白。
本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等。而与FreeList密切相关的一个重用特性HWM,与sql性能密切相关,本文也作了原理分析介绍。在原理探讨的...
orcal中关于HWM介绍,及相关操作说明。
hwm
Python中的HWM93 Python≥3.6的NASA水平风模型HWM93 适用于许多Fortran编译器,包括: Gfortran≥5 英特尔ifort PGI pgf90 Nvidia flang 安装 需要诸如gfortran类的Fortran编译器。 我们使用f2py ( numpy一...
中性大气风场模型(2014):计算中性大气风场速度
62332440_hwm840Dsl
从上面的输出中,我们可以看到,PDATA.DB_JJ_INFO_TEMP表所在的表空间号为11,数据段头部为10号文件的1400号块。 5. 接下来用ODU扫描表空间的extent: ODU> scan extent tablespace 11 scanning extent… scanning ...
用游标处理查询结果,对需要收缩表空间的表进行shrink命令,之后该脚本对表空间大小和HWM计算出可resize的空间,并进行收缩,计算方法(表空间大小-HWM)*0.8