Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50351
  • 博文数量: 25
  • 博客积分: 2015
  • 博客等级: 大尉
  • 技术积分: 215
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-16 17:34
文章分类
文章存档

2008年(25)

我的朋友

分类: Oracle

2008-03-11 15:40:59

在线回收高水位是10g新特性
 
先讲讲移动表空间
alter table t2 move tablespace users; 移动表空间
  当表运行一段时间后,表中的部分数据会被删除,导致了高水位下有空的数据块,或者不满的数据块.数据库在处理全表扫描的时候总是读高水位下的所有数据块.降低了全表扫描的效率,我们将挪动表空间后,数据会紧密的码放,释放多余的空间,回收了高水位线.提高了全表扫描的性能,节约了存储空间。
移动表空间的动作比较大,尤其对于很大的一张表,将要花费很长一段时间.所以在10g提供了一个新特性--再线回收表的高水位.
 
 
 
在线回收高水位
 
>conn scott/tiger
 
>create table emp1 as select * from emp;
 
>alter table emp1 enable row movement;  启动行移动特性
 
>insert into emp1 select * from emp1;
 
/
/
/
/
/
>commit;增加到14000行
 
>delete emp1 where deptno=30; 删除将近一半的数据.
 
>analyze table emp1 compute statistics;
 
>select num_rows,blocks,empty_blocks,avg_space from tabs where table_name = 'EMP1';
 查询高水位
 
>alter table emp1 shrink space compact;  将数据挪动到表的前端,但不回收高水位.
 
>alter table emp1 shrink space;  回收高水位.
 
>analyze table emp1 compute statistics;
 
>select num_rows,blocks,empty_blocks,avg_space from tabs where table_name = 'EMP1';

 
  
阅读(711) | 评论(0) | 转发(0) |
0

上一篇:临时表的使用

下一篇:压缩表的存储数据

给主人留下些什么吧!~~