oracle 分区删除三种方式

测试了一下分区删除的三种方式:
    1. delete完数据再drop分区 (线上现有方式)
    2. truncate分区数据再删除的方式
    3. 直接drop分区

测试结果如下(数据量较大没有多次导入表,分别使用了3个分区进行测试,数据量大致在同一量级)
  方法1 方法2 方法3
分区名称 P20151110 P20151111 P20151112
数据量 10503249 11835671 9248433
耗时 1:29:37 0:14:38 0:02:17

使用方法2和方法3删除分区时,都会堵塞当前分区的写操作,对其他分区无影响。


测试步骤如下:

SQL> select count(*) from tab_a partition(P20151110);

 

  COUNT(*)

----------

  10503249

 

SQL> select count(*) from tab_a partition(P20151111);

 

  COUNT(*)

----------

  11835671

SQL> select count(*) from tab_a partition(P20151112);   

 

  COUNT(*)

----------

   9248433


SQL> set timing on

SQL> declare

  2      l_sql varchar2(400);

  3      l_rc number;

  4    begin

  5        l_sql := 'delete from tab_a partition(P20151110) where rownum<=10000';

  6        loop

  7          execute immediate l_sql;

  8         l_rc := sql%rowcount;

  9          exit when (l_rc<=0 or l_rc is null);

 10          commit;

 11        end loop;

 12        commit;

 13    end;

 14    /

 

PL/SQL procedure successfully completed.

 

Elapsed: 01:29:36.92

 

SQL>  alter table tab_a truncate partition(P20151111) update global indexes;

 

Table truncated.

 

Elapsed: 00:14:37.66

 

SQL> alter table tab_a drop partition(P20151112) update global indexes;

 

Table altered.

 

Elapsed: 00:02:16.59


  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值