Postgresql滚动删除旧行?

时间:2013-08-12 12:52:54

标签: postgresql

我想删除一张超过7天的桌子上的行。做这个的最好方式是什么?制作一个每晚运行的cron作业,或者PostgreSQL内置了哪些功能来做这样的事情?

3 个答案:

答案 0 :(得分:20)

delete from the_table
where the_timestamp < now() - interval '7 days'

答案 1 :(得分:2)

安排数据库作业的最简单方法是创建一个使用psql执行SQL脚本的cron作业。

Here您可以阅读psql。使用-f-c将SQL命令传递给psql

编写PL / pgSQL函数也可能更容易,这可以帮助您完成工作并使用psqlSELECT my_function();调用它

答案 2 :(得分:2)

PostgreSQL目前没有内置的类似cron的功能,因此我使用系统的cron来运行合适的删除语句。如果你已经在timestamp列上有一个btree索引,你也可以比每晚更频繁地运行删除,一次取出一小块。如果您没有索引,那么在非高峰时段每晚运行它会更好。

如果这些没有您需要的性能,您可以尝试分区。但我会这样做是最后的手段,而不是第一手段。