Remix.run Logo
coder543 11 hours ago

I keep hoping Postgres will one day have the ability to mark a timestamp column as an expiry column. It would be useful for all kinds of things beyond caching, including session tokens, feature flags, background jobs, rate limiting, delayed deletion (as a variant of soft deletion), etc.

It seems like the autovacuum could take care of these expired rows during its periodic vacuum. The query planner could automatically add a condition that excludes any expired rows, preventing expired rows from being visible before autovacuum cleans them up.

neoden 10 hours ago | parent [-]

One could use a trigger for this. All we need is to setup a trigger that would delete all expired records looking at some timestamp column on update. That would eat up some latency but as was said, most projects would find it good enough anyway.

dmitry-vsl 8 hours ago | parent | next [-]

Probably better to use partitioned table and drop old partitions.

nhumrich 10 hours ago | parent | prev [-]

I use pg cron for this. But I don't have a need for TTL to be to the minute accurate, or even to the hour.