zoukankan      html  css  js  c++  java
  • oralce move和shrink释放高水位

    转自:https://blog.51cto.com/fengfeng688/1955137

    move和shrink的共同点:

    收缩段,消除部分行迁移,消除空间碎片,使数据更紧密

    shrink用法:

    语法:

    alter table TABLE_NAME shrink space [compact|cascades]

    shrink分为以下两个阶段:

    1.数据重组(compact)

    通过一系列的insert,delete操作,将数据尽量排列在段的前面。在这个过程中,需要在表上面加RX锁,即只在需要移动的行上加锁。由于涉及到ROWID的改变,因此需要启动行迁移,同时disable基于rowid的trigger,这一过程对表的影响比较小。

    2.高水位(HWM)的调整

    此过程需要在表上加X锁,会造成表上的所有DML语句阻塞,在业务比较繁忙的系统上可能会产生较大的影响

    因此如果系统比较繁忙,可以先重组数据,再调整水位线

    /*打开行迁移*/
    alter table TABLE_NAME enable row movement;
    /*只整理碎片 不回收空间*/
    alter table TABLE_NAME shrink space compact; 
    /* 整理碎片并回收空间*/
    alter table TABLE_NAME shrink space;  
    /*整理碎片回收空间 并连同表的级联对象一起整理(比如索引)*/              
    alter table TABLE_NAME shrink space cascade;   
    /*分区表的整理*/ 
    alter table pt_table modify  PARTITION P1 shrink space cascade; 

    shrink的优点:

    可以在线执行

    可以使用参数cascade同步收缩索引等

    执行后不会导致索引失效

    可以避免alter table move过程中对表空间的占用

    move:

    语法:

    alter table table_name move tablespace new_tablespace;
    alter index index_name rebuild tablespace new_tablespace

    move的优点:

    可以修改表的初始storage参数,例如initial

    使用move的注意事项:

    表上面的索引需要重建,因为move后,rowid会发生变化,因此索引会失效

    move表是会对表锁定,而且是exclusive lock

    move时要保证新的表空间剩余量

    move和shrink的区别

    move后,表在表空间中的位置肯定会变,可能前移也可能后移,一般来说如果该表前面的表空间中有足够空间容纳该表,则前移,否则后移

    hrink后,表在表空间中的位置肯定不变,也就是表的段头位置不会发生变化

    Move会移动高水位,但不会释放申请的空间,是在高水位以下(below HWM)的操作

    shrink space 同样会移动高水位,但也会释放申请的空间,是在高水位上下(below and above HWM)都有的操作

    使用move时,会改变一些记录的ROWID,所以MOVE之后索引会变为无效,需要REBUILD

    使用shrink space时,索引会自动维护。如果在业务繁忙时做压缩,可以先shrink space compact,来压缩数据而不移动HWM,等到不繁忙的时候再shrink space来移动HWM

    shrink可以单独压缩索引,alter index xxx shrink space来压缩索引。另外、压缩表时指定Shrink space cascade会同时压缩索引

  • 相关阅读:
    Spring MVC异常处理
    Spring MVC静态资源放行
    SpringMVC 接受前端传递的数据
    Eclipse+Maven构建SpringMVC+log4j2
    Eclipse+Maven构建SpringMVC项目
    log4j2
    Centos7 / RHEL 7 双网卡绑定
    CentOS7安装vncserver
    CentOS7修改ssh端口
    Linux配置Oracle 11g自动启动
  • 原文地址:https://www.cnblogs.com/monkey6/p/11172148.html
Copyright © 2011-2022 走看看