oracle水位线查询,oracle 高水位线查询

oracle数据库,怎么降低高水位线1、在仅有DML(比如delete,insert)操作时,高水位线只会增长,不会降低 。具体来说,由于程序使用的delete语句不回收使用过的空间,数据虽然删除了,但是高水位线却没有降低,仍然处于之前的水位 。
2、如果确实数据量大,那必然要扩空间加数据文件 。如果数据库高水位线过高 , 浪费空间 , 那就在线回缩高水位,然后清表 。
3、在垃圾回收之后,根据从类元数据中释放的空间量 , 可以提高或降低高水位线 。高水位线将被提高,以免过早引发另一次垃圾收集 。高水位标记最初设置为命令行选项-XX:MetaspaceSize的值 。
4、不会下降 。而使用select语句查询数据时,数据库会扫描高水位线以下的数据块 , 因为高水位线没有变化,所以扫描的时间不会减少,所以才会出现使用delete删除数据以后,查询的速度还是和delete以前一样 。
如何降低Oracle表的高水位1、使用delete删除数据后,表空间不会回收,存在高水位 High Water Mark,HWM) 是Oracle(Segment)级别的概念 。在仅有DML(比如delete,insert)操作时,高水位线只会增长,不会降低 。
2、具体情况具体分析 。哪个表空间用的多 。如果确实数据量大,那必然要扩空间加数据文件 。如果数据库高水位线过高,浪费空间 , 那就在线回缩高水位,然后清表 。
3、水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark,HWM) 。在数据库表刚建立的时候 , 由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值 。
oracle9.2如何在不使用truncate语句的情况下将HWM高水位线拉回来1、具体来说 , 由于程序使用的delete语句不回收使用过的空间,数据虽然删除了,但是高水位线却没有降低,仍然处于之前的水位 。
2、delete:dml语句,用于删除数据,可以回滚(反悔) , 可以精确删除 。该语句非常耗费资源,需要写undo回滚段,占用大量内存 。delete语句是所有dml语句中最消耗资源的语句 。truncat:DDL语句,清除数据 。该操作不可回滚 , 不可精确删除 。
3、在功能上,truncate是清空一个表的内容,它相当于delete from table_name 。
4、由于这个特点,使HWM很象一个水库的历史最高水位,这也就是HWM的原始含义 , 当然不能说一个水库没水了,就说该水库的历史最高水位为0 。但是如果我们在表上使用了truncate命令,则该表的HWM会被重新置为0 。
5、因为delete不回收高水位,下次做全表扫描的时候还会扫描到高水位线,但其实高水位以下很多都是free的空间,会影响全表扫描的性能,这也是如果你想删除表中所有数据时最好用truncate的原因,因为truncate回收高水位 。
oracle数据库中table的空间在delete后为什么没有收回1、delete数据不会回收已经分配出去的block(也就是delete前后你查看user_segments中的信息不会有改动) 。但这时你对表执行analyze后查看dba_tables表的话会发现empty_block数目变大或者avg_space数据变小 。
2、使用delete删除数据后,表空间不会回收,存在高水位 High Water Mark,HWM) 是Oracle(Segment)级别的概念 。在仅有DML(比如delete,insert)操作时,高水位线只会增长,不会降低 。
3、tables是存储某个tablespace(表空间)里面的,tablespaces可以包含多个dbf文件,你在硬盘里面可以查到dbf文件 。表空间会随着包含的表内容增加而增大,但是不会随着table删除而减小 。如果要增加剩余空间,需要先drop table  , 再drop tablespace 。

推荐阅读