Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think this article goes a bit overboard with the negative language ('lies', 'fools'), especially since (auto)VACUUM and indexes really don’t have that much to do with each other: the former is indeed critical on PostgreSQL to ensure availability, but something of a niche feature for most other databases, while index maintenance is important regardless of platform.

For a certain class of applications ('SQLite level'), there’s not even much of that, though, other than ensuring there are no missing or obsolete indexes, which you can take care of with 15 minutes of quality time with the EXPLAIN statement every now and then.

When using a database with persistent index statistics (like SQL Server and Oracle and, yeah, PostgreSQL), it’s important to at least ensure those get updated on a regular basis (but that’s almost always automatic and sufficient unless you're prone to not-usually-done bulk operations) and to optimize or rebuild the underlying tree on a semi-regular basis. This does require some additional non-default setup and monitoring, and can be surprising when you first encounter it.

But it’s not exactly an obscure-slash-secret bit of DBA lore either, unlike what's suggested here...





Author here - thank you for the comments. This article is indeed playing a lot on verge of clickbait and I did asked about that shortly after publishing.

No worries -- not publishing at all is worse than publishing disliked content (well, to a certain extent), so keep reading that feedback, but don't be too discouraged by it!

It’s very unpleasant to read. I did find the article useful nonetheless.

There is a bunch of AI slop in there ... It does seem like the author probably knows what he's talking about, since there is seemingly good info in the article [1], but there's still a lot of slop

Also, I think the end should be at the beginning:

Know when your indexes are actually sick versus just breathing normally - and when to reach for REINDEX.

VACUUM handles heap bloat. Index bloat is your problem.

The intro doesn't say that, and just goes on and on about "lies" and stupid stuff like that.

This part also feels like AI:

Yes. But here's what it doesn't do - it doesn't restructure the B-tree.

What VACUUM actually does

What VACUUM cannot do

I don't necessarily think this is bad, since I know writing is hard for many programmers. But I think we should also encourage people to improve their writing skills.

[1] I'm not an SQL expert, but it seems like some of the concrete examples point to some human experience


Author here – it’s actually funny, as you pointed out parts that are my own (TM) attempts to make it a bit lighthearted.

LLM is indeed used for correction and improving some sentences, but the rest is my honest attempt at making writing approachable. If you’re willing to invest the time, you can see my fight with technical writing over time if you go through my blog.

(Writing this in the middle of a car wash on my iPhone keyboard ;-)


Yeah, I get accused of being an LLM all the time as well, best to ignore that kind of slop... (which, ironically, goes both ways!)

Yeah my eyes glaze over when I see the familiar tone.

If it's not worth writing it sure ain't worth reading.


Sorry, you lost at the Turing test

A better title might have been VACUUM addresses heap bloat; REINDEX addresses index bloat

Similar to a recent story Go is portable, until it isn't -- the better title is Go is portable until you pull in C dependencies

https://lobste.rs/s/ijztws/go_is_portable_until_it_isn_t




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: