高水位线的压缩

高水位线的压缩


Oracle 10g 开始采用了 shrink 技术
Shrink 是通过事务的方式将数据行从一个数据块转移到另一个数据块。收缩过程中,表仍然可以进行 DML 操作
当然,事务要能够进行 DML 操作,还是需要等待收缩引起的事务锁释放。
收缩虽然是事务,但是数据并没有发生变化,因此不会引起触发器的触发。
使用 shrink 的前提条件
1 、表所在的表空间必须使用 ASSM (自动段空间管理)
2 、在收缩表上必须启用 row movement 选项

建立一张表

SQL> create table test_shrik (id number ) tablespace users;

Table created.

查看各个表空间管理信息

SQL> select tablespace_name,t.segment_space_management
  2   from dba_tablespaces t
  3  where tablespace_name in ('SYSTEM','USERS');

TABLESPACE_NAME                SEGMEN
------------------------------ ------
SYSTEM                         MANUAL
USERS                          AUTO

插入数据

SQL> insert into test_shrik
  2  select rownum from dual connect by level <=200000;

200000 rows created.

SQL> commit ;

Commit complete.

查看统计信息
SQL> select t.table_name,BLOCKS,EMPTY_BLOCKS,NUM_ROWS
  2   from user_tables t
  3  where table_name = upper('test_shrik');

TABLE_NAME                         BLOCKS EMPTY_BLOCKS   NUM_ROWS
------------------------------ ---------- ------------ ----------
TEST_SHRIK

收集统计信息

SQL> exec dbms_stats.gather_table_stats('sys','test_shrik');

PL/SQL procedure successfully completed.

SQL> select t.table_name,BLOCKS,EMPTY_BLOCKS,NUM_ROWS
  2   from user_tables t
  3  where table_name = upper('test_shrik');

TABLE_NAME                         BLOCKS EMPTY_BLOCKS   NUM_ROWS
<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值