假设test用户下创建的t_jingyu表
vsql -Utest -wtestpwd
create table t_jingyu(
col1 int,
col2 varchar,
col3 timestamp not null)
PARTITION BY (date_part('doy', t_jingyu.col3));
 
需求:删除doy分区表t_jingyu的历史分区数据(8月份)
$.sql
\timing
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-01'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-02'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-03'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-04'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-05'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-06'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-07'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-08'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-09'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-10'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-11'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-12'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-13'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-14'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-15'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-16'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-17'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-18'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-19'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-20'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-21'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-22'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-23'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-24'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-25'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-26'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-27'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-28'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-29'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-30'::date));
SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-31'::date)); 
$vsql -Utest -wtestpwd -f /tmp/jingyu/del_part08_01-.sql
Timing is on.
  DROP_PARTITION
-------------------
 Partition dropped
( row)

Time: First  row): 12732.105 ms. All rows formatted: 12732.215 ms
  DROP_PARTITION
-------------------
 Partition dropped
( row)

Time: First  row): 71796.168 ms. All rows formatted: 71796.237 ms
……
Time: First  row): 16020.296 ms. All rows formatted: 16020.362 ms
[dbadmin@Vertica01 jingyu]$ 

数据库表有入库时,drop历史分区会有锁等待,如下:

dbadmin=> SELECT DROP_PARTITION('test.t_jingyu', EXTRACT('doy' FROM '2014-08-04'::date));
 ERROR :  Unavailable: [Txn 0xa000000005fb08] O lock table - timeout error Timed out O locking Table:test.t_jingyu. I held by [user dbadmin (copy test.t_jingyu(col1,col2,col3)
from '/home/dbadmin/bin/vertica97/data/t_jingyudat1411006284757/*' on any node
delimiter E'~' NULL '' NO ESCAPE DIRECT;)], I held by [user dbadmin (copy test.t_jingyu(col1,col2,col3)
from '/home/dbadmin/bin/vertica101/data/t_jingyudat1411006351418/*' on any node
delimiter E'~' NULL '' NO ESCAPE DIRECT;)]. Your current transaction isolation level is SERIALIZABLE
dbadmin=>
同时关注数据库的队列,发现同时有drop_partition和copy入库。
dbadmin, ), )
dbadmin-> from sessions
dbadmin-> where not current_statement is null and (transaction_id, statement_id)<>(current_trans_id(), current_statement())
dbadmin;
                                                                                                  substr                                                                                                  | count
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------

 copy test.t_jingyu(col1,col2,col3) f
( rows)

在没有copy入库时,drop_partition 大概20s内就可以删除一个历史分区(50亿左右数据量)。

Vertica删除历史分区数据的更多相关文章

  1. 教程:使用Diskpart创建、扩展或删除磁盘分区

    在Windows Server环境下进行基本的磁盘操作时,管理员可以使用Disk Partition Utility或Diskpart等工具.后者是一个命令行解释器,可作为磁盘管理工具. 管理员可以使 ...

  2. Oracle 删除表分区

    删除表分区(drop partition)    删除表分区包含两种操作,分别是:   Ø 删除分区:alter table [tbname] drop partition [ptname] UPDA ...

  3. 工作随笔——mysql子查询删除原表数据

    最近在开发的时候遇到一个mysql的子查询删除原表数据的问题.在网上也看了很多方法,基本也是然并卵(不是写的太乱就是效率太慢). 公司DBA给了一个很好的解决方案,让人耳目一新. DELETE fb. ...

  4. 利用闪回查看Oracle表历史时刻数据

    利用闪回查看Oracle表历史时刻数据 1.查看表历史时刻数据 select * from tab_test AS OF TIMESTAMP to_timestamp('20140917 10:00: ...

  5. sql server 中删除表中数据truncate和delete的区别(转载自.net学习网)

    我们都知道truncate table可以用来删除整个表的内容,它与delete后面不跟where条件的效果是一样.但除此之外,我们还清楚它们之间有其它的区别吗?本章我们将一起讨论truncate与d ...

  6. MYSQL中delete删除多表数据

    MYSQL中delete删除多表数据 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t1 ...

  7. oracle 删除表、数据

        truncate ddl语句,删除表中数据,速度要比delete快:且所有自增字段重新开始计数:删除数据保留表结构:删除的数据不进入rollback segment,无法恢复.例: trunc ...

  8. 删除MySQL重复数据

    删除MySQL重复数据 项目背景 在最近做的一个linux性能采集项目中,发现线程的程序入库很慢,再仔细定位,发现数据库里面很多冗余数据.因为在采集中,对于同一台设备,同一个时间点应该只有一个数据,然 ...

  9. splice从数组中删除指定定数据

    /*从数组中删除指定定数据var somearray = ["mon", "tue", "wed", "thur"]so ...

随机推荐

  1. echarts中显示效果option中必有的属性

    写一个最简单的效果让option中不可缺少的属性. var option = { xAxis:[ //x轴,数组对象,其下至少有一个对象 {.....} ], yAxis:[//y轴,数组对象,其下可 ...

  2. Day22_IO第四天

    1.合并流(序列流)-) { //不断的在a.txt上读取字节 fos.write(b1); //将读到的字节写到c.txt上 } fis1.close(); //关闭字节输入流 FileInputS ...

  3. 80、Android Support v4、v7、v13的区别以及应用场景

    一.简介 在 Android 开发中,为了使用高版本API的新特性,需要添加额外的包来使用这些新特性,这就是 Android Support 包 二.分类 Android Support v4: 这个 ...

  4. eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法

    eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法 当使用eclipse导入外部的web工程时,有时会提示HttpServletRequest, Serv ...

  5. vsftpd.conf Details

    引用:http://blog.chinaunix.net/uid-23257894-id-2466823.html /etc/vsftpd/vsftpd.conf文件详解,分好类,方便大家查找与学习 ...

  6. glutBitmapCharacter及glBitmap在ATI显卡下无法正常显示的原因初探

    最近家里台式机的老显卡烧了,所以更换了ATI的HD6450显卡,却发现glutBitmapCharacter及glBitmap都无法正常显示字符,nviDIA和intel的显卡则一切正常. 发邮件咨询 ...

  7. C# Window Form解决播放amr格式音乐问题

    最近搞一个项目,需要获取微信端语音文件,下载之后发现是AMR格式的录音文件,这下把我搞晕了,C#中的4种播放模式不支持播放AMR,想到都觉得头痛,如何是好?最后找到的方案,其实也简单:windows ...

  8. java实验一实验报告

    Java实验报告一:Java开发环境的熟悉                                                                               ...

  9. start.s 解析(一)

    可以参考 : http://blog.csdn.net/bluesummerg/article/details/5940452 (强大的反汇编) http://www.cnblogs.com/yanh ...

  10. 正确的理解this 和 super

    this和super是Java的两个关键字. 先明确一个问题,有人错误的认为它们是对象里的“属性”,这只能怪老师没有讲清楚计算机的本质了.因为计算机的处理器只能用指令去处理数据,像C语言之类的容易理解 ...