重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
select blocks, empty_blocks from dba_tables where table_name='xxx' and owner='xx';
创新互联建站于2013年成立,是专业互联网技术服务公司,拥有项目成都网站建设、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元浏阳做网站,已为上家服务,为浏阳各地企业和个人服务,联系电话:13518219792
blocks就是已经分配的空间即HWM,实际分配的空间,不是实际大小
无法是 老生常谈的 truncate 、move 、shrink space
实际上 大多数表不需要降高水位,不要迷信高水位
在Oracle数据的存储中,可以把存储空间想象为一个水库,数据想象为水库中的水。水库中的水的位置有一条线叫做水位线,在Oracle中,这条线被称为高水位线(High-warter mark, HWM)。在数据库表刚建立的时候,由于没有任何数据,所以这个时候水位线是空的,也就是说HWM为最低值。当插入了数据以后,高水位线就会上涨,但是这里也有一个特性,就是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。也就是说,这条高水位线在日常的增删操作中只会上涨,不会下跌。
高水位线的意思是oracle数据块历史使用空间的最高点,好处就是比如做全表扫描的话,有了高水位线,全表扫描只会扫描到水位线处,再向上就不会扫描了,因为根本没有数据,所以对oracle查询性能是有一定的帮助的,另外如果一个表做过大量的delete操作的话,需要定时shrink,因为delete不回收高水位,下次做全表扫描的时候还会扫描到高水位线,但其实高水位以下很多都是free的空间,会影响全表扫描的性能,这也是如果你想删除表中所有数据时最好用truncate的原因,因为truncate回收高水位。
最笨最简单也最管用的方法,就是重建表。建立一个新表将原表的数据插入到新表,删除原表,将新表重命名就OK。