使用表分区删除行

时间:2015-01-29 07:16:13

标签: sql sql-server partition

我有一个巨大的日志表,它非常忙于保存用户日志。我的任务是安排一个工作,保留最近3天的日志或最后50k行(以较大者为准)并删除其余部分。这可以通过TABLE PARTITION来完成。我不能通过DELETE语句来做到这一点,这是非常昂贵的时间并且要停止插入行。该表包含log_time为VARCHAR。

感谢。

2 个答案:

答案 0 :(得分:1)

我可以建议你这个简单的解决方案:

  1. 每3天创建一个名为log-2015-01-28的表,并将2015-01-28 - 2015-01-30之间的所有日志写入此表
  2. 2015-01-30之后创建新表log-2015-01-28-31并将所有新行写入其中
  3. 2天后的DROP表log-2015-01-28
  4. 我认为它必须非常快速地工作

答案 1 :(得分:0)

  

在插入

上创建触发器      

while触发器检查表的空间。

     

如果> 50k然后删除最早的行'