Michael Christofides
banner
michristofides.com
Michael Christofides
@michristofides.com
Half of the team behind @pgmustard.com and (a different) half of the team behind Postgres FM
Reposted by Michael Christofides
Our Read Efficiency tips are now more efficient to read!

πŸ“ Better wording, mostly for clarity

πŸ”¬ More specific to the scan type, and therefore shorter in most cases

🌟 Improved scoring, especially for Bitmap Heap Scans

More details: www.pgmustard.com/changelog
January 20, 2026 at 4:14 PM
If you have any Postgres performance issues, I'd love to hear about them and try to help: pgmustard.com/office-hours
Office hours - pgMustard
For January, I’m offering a private free call (up to 1 hour) to discus anything Postgres performance related.
pgmustard.com
January 6, 2026 at 2:49 PM
Have you seen Tomas Vondra’s efforts in this area? m.youtube.com/watch?v=3_Cn...
Tomas Vondra - Performance Archaeology (PGConf.EU 2024)
YouTube video by PostgreSQL Europe
m.youtube.com
December 24, 2025 at 2:25 PM
Very cool! If you start a label, can I suggest Nusiic Records?
December 23, 2025 at 11:54 AM
Is that a feature or a bug?
December 12, 2025 at 8:15 PM
Cool, would be great to hear how it goes! A couple of new options I hadn’t heard of til lately are Apache Cloudberry and pg_lake. It’s cool to see such different implementation efforts, I’m curious to see which of all the options prove popular longer term
December 4, 2025 at 9:00 PM
Hello! I don't always ask, but I the ones I've seen at that scale have mostly (all?) been sharded... does that count? There's a bunch of Postgres forks/extensions in this space at the moment (I know of them, but haven't tried most). Do you already have a shortlist of options?
December 4, 2025 at 3:02 PM
Reposted by Michael Christofides
We've revamped our "Operation on Disk" tips ✨

* Made them clearer
* Made them more succinct (in most cases)
* Improved the scoring
* Mention hash_mem_multiplier (when relevant)
* Show "Operation in Memory" in more cases, with the memory used
* Updated the linked blog post
November 24, 2025 at 5:37 PM
I’m a heavy user of Things and a big fan of it! Recurring tasks have nice flexibility, you can choose either β€œevery X”, or β€œY after the last one was completed”.

Their reminders work well for me, but are only time based (some apps have location based reminders too).

Also no shared lists in Things
November 21, 2025 at 11:49 AM
Reposted by Michael Christofides
Big performance problems 🀝 tiny CS tricks

Our latest blog breaks down how bloom filters helped us take an API from 5s to 0.3s - even with millions of alerts in play.

If you’re fighting slow queries or Postgres under pressure, this one’s worth a look: go.incident.io/r9jgcI9
November 17, 2025 at 5:24 PM
Reposted by Michael Christofides
Today is the day -- end-of-life for Postgres 13

www.postgresql.org/support/vers...
November 14, 2025 at 1:49 AM
Reposted by Michael Christofides
Explain is a powerful tool in Postgres.

If you care about performance, get comfortable running `explain` and `explain analyze` commands regularly, and learn how to interpret its output.

This blog is a great intro.

www.depesz.com/2013/04/16/e...
November 4, 2025 at 2:59 PM
Reposted by Michael Christofides
I'm not sure @ankane.bsky.social is human - maybe some kind of open source being from the future πŸ˜‚
I said to a colleague - "we'll see, but it's ankane, so it's entirely possible it'll get done soon". Less than an hour later, it was updated 🀯
November 12, 2025 at 1:18 AM
Reposted by Michael Christofides
New blog post: "What do the new Index Searches lines in EXPLAIN mean?"

In Postgres 18 you'll start seeing things like "Index Searches: 1" on each of your index scans. We looked into what they mean, and how that information can be helpful.

www.pgmustard.com/blog/what-do...
What do the new Index Searches lines in EXPLAIN mean? - pgMustard
In Postgres 18 you’ll now see β€œIndex Searches” lines in EXPLAIN ANALYZE output. If like me you were wondering what those mean exactly, you’re in the right place.
www.pgmustard.com
November 10, 2025 at 1:23 PM
Reposted by Michael Christofides
2 million indexes! You’ve gotta listen to this in context of this Gadget episode with Harry β€” but that’s a wild figure! 😳

postgres.fm/episodes/gad...
Postgres FM | Gadget's use of Postgres
Nik and Michael are joined by Harry Brundage from Gadget to talk about their recent zero-downtime major version upgrade, how they use Postgres more generally, their dream database, and some challen...
postgres.fm
September 28, 2025 at 7:18 PM
Hello! I really like pg_stat_statements, then you can look into your queries by all sorts of metrics (eg for read heavy workloads, ordering by total_exec_time is a good starting point). Then I like to run EXPLAIN (ANALYZE, BUFFERS, etc) on the worst offender(s) to look for optimizations
September 24, 2025 at 12:47 PM
Reposted by Michael Christofides
Sometimes the trick to optimizing database queries is simple: Don't do stupid stuff.
August 28, 2025 at 2:28 PM
I'm a bit out of date on the SQL Server side of things, but with Postgres have you already tried turning on track_io_timing and using more of the EXPLAIN parameters?

For example:

set track_io_timing = on;
explain (analyze, buffers, verbose, settings, wal) ...
September 3, 2025 at 11:13 AM
Reposted by Michael Christofides
The upcoming Postgres 18 is set to include some nice improvements to EXPLAIN:

* BUFFERS on by default with ANALYZE πŸŽ‰
* Fractional "actual rows" (huge in some cases)
* Quite a few new fields (including the very cool Index Searches)

We've now added support for all of them. πŸ’›
August 20, 2025 at 2:40 PM
Reposted by Michael Christofides
Amazing post on making Postgres slower (yes, slower!) on purpose. byteofdev.com/posts/making... #postgres #postgresql Favorite bit: "random_page_cost = 1e300" LOL! Well done
Making Postgres 42,000x slower because I am unemployed
As an respectable unemployed person must do, I tried to make Postgres as slow as possible
byteofdev.com
July 28, 2025 at 2:51 PM
Reposted by Michael Christofides
Really non-trivial case with MultiXacts and brilliant RCA and level of transparency from the Metronome team – great example of what to do with new types of #PostgreSQL incidents!

enjoyed discussion a lot! www.youtube.com/watch?v=9KoP...
MultiXact member space exhaustion | Postgres.FM 151 | #PostgreSQL #Postgres podcast
YouTube video by PostgresTV
www.youtube.com
July 18, 2025 at 6:43 PM
Reposted by Michael Christofides
PostgresFM with Sugu, co-creator of Vitess, originally created to shard MySQL in YouTube, and then used by GitHub, Pinterest, Slack, Shopify, etc. Discussed his work at Supabase on Multigres, sharding for PostgreSQL. Enjoyed a lot!! Take it to a long hike or drive: youtu.be/KOepJivmWTg?...
Multigres | Postgres.FM 150 | #PostgreSQL #Postgres podcast
YouTube video by PostgresTV
youtu.be
July 11, 2025 at 4:13 PM
Reposted by Michael Christofides
3 years of PostgresFM πŸ₯³

And now, @michristofides.com being back from 2-week break, and we've recorded our 150th episode

A very interesting one, don't miss -- this Friday
July 9, 2025 at 1:32 AM
Reposted by Michael Christofides
Postgres Meetup for All tomorrow www.meetup.com/postgres-mee...
July 8, 2025 at 3:58 PM