Hypertable在Delete命令后执行Insert命令时应该注意的问题

      Delete命令适用于一个单独的row,对于指定的row,它可以删除一个CQ的所有CELL,一个CF的所有CELL,或者一个row的所有CELL。如果指定了TIMESTAMP子句,将会删除TIMESTAMP小于或者等于给定值的CELL。否则,将自动分配当前时间作为TIMESTAMP子句。

      Delete在删除时,将会插入一个删除标记,即此时为逻辑删除。删除标记持久的存在于库中,除非一个major compaction操作发生,此时将执行物理删除。删除标记将会删除同一row下,TIMESTAMP早于删除标记对应的TIMESTAMP的记录。

      如果在执行了Delete命令后,再执行Insert命令,并且Insert命令中的TIMESTAMP小于Delete命令中的TIMESTAMP,则会出现不能插入的情况。例如:

delete * from test where row = "row1" TIMESTAMP “2012-11-11 00:00:00”   或者  delete * from test where row = "row1"  //TIMESTAMP 默认为当前时间,假设当前时间为 “2012-11-11 00:00:00” ;

insert into test values ("2012-11-10 00:00:00", "row1", "foo", "bar")    //此CELL不能被插入;

      当然,如果Insert命令不带TIMESTAMP的话,则应该可以正常执行,因为Insert时的TIMESTAMP默认为当前时间,其应该晚于Delete命令中的TIMESTAMP

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值