Sign in

Michael Christofides

@michristofides.com
117 followers 181 following 42 posts

Half of the team behind @pgmustard.com and (a different) half of the team behind Postgres FM

PostsRepliesMedia
Reposted by Michael Christofides
pgMustard @pgmustard.com · 22/07/2026
The upcoming Postgres 19 is set to include extra EXPLAIN info in several places: 🚦 An "IO" parameter (async info) 💡 Generated and supplied hint info (pg_plan_advice) ♻️ Memoize estimate fields 🪵 WAL full page image bytes We've added support for them all in @pgmustard.com 🎉
032
Michael Christofides @michristofides.com · 30/04/2026
Nice to see that JIT will now be off by default from Postgres 19: git.postgresql.org/gitweb/?p=po...
git.postgresql.org
git.postgresql.org Git - postgresql.git/commitdiff
130
Reposted by Michael Christofides
pgMustard @pgmustard.com · 19/02/2026
pgMustard Pro now includes 1,000 API credits 🎉 Bulk-analyse plans, plug into your LLM workflows, or build something we haven't thought of yet. Docs: pgmustard.com/docs#api
021
Reposted by Michael Christofides
pgMustard @pgmustard.com · 13/02/2026
New blog post: Read efficiency issues in Postgres queries If you've got a query that's slowly degrading in performance, you might have a read efficiency issue. The root cause could be table bloat, index bloat, or data locality degradation. www.pgmustard.com/blog/read-ef...
pgmustard.com
Read efficiency issues in Postgres queries - pgMustard
A lot of the time in database land, our queries are I/O constrained. As such, performance work often involves reducing the number of page reads. Indexes are a prime example, but they don’t solve every...
011
Reposted by Michael Christofides
Kate McKean @katemckean.bsky.social · 11/02/2026
Over on threads someone just use ai;dr and we all need to adopt that right quick
85119904138
Reposted by Michael Christofides
pgMustard @pgmustard.com · 20/01/2026
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
A screenshot of two pgMustard windows, with an example query plan in each, and an arrow pointing from the old version to the new. Each has a Bitmap Heap Scan highlighted, and the Read Efficiency tip expanded.
041
Michael Christofides @michristofides.com · 06/01/2026
If you have any Postgres performance issues, I'd love to hear about them and try to help: pgmustard.com/office-hours
pgmustard.com
Office hours - pgMustard
For January, I’m offering a private free call (up to 1 hour) to discus anything Postgres performance related.
044
Reposted by Michael Christofides
pgMustard @pgmustard.com · 24/11/2025
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
A side my side comparison highlighting mostly how much more succinct a new version of the tip can be. The tip wording of the new version is as follows:

This operation wrote out to disk to store temporary data.

Disk space used: 282 MB

Reducing the size of the operation would make it faster, especially if you can get it to fit into working memory.

You can do this by reducing the number of rows, with a LIMIT clause, or reducing the size of each row, by operating on fewer columns.

Another option is to increase the memory available, by adjusting work_mem.

Learn more about working memory (underlined, as it's a link)
031
Reposted by Michael Christofides
incident.io @incident.io · 17/11/2025
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
152
Reposted by Michael Christofides
Nik Samokhvalov @samokhvalov.bsky.social · 14/11/2025
Today is the day -- end-of-life for Postgres 13 www.postgresql.org/support/vers...
011
Reposted by Michael Christofides
Ben @benjdd.com · 04/11/2025
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...
051
Reposted by Michael Christofides
JP Camara @jpcamara.com · 12/11/2025
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 🤯
0171
Reposted by Michael Christofides
pgMustard @pgmustard.com · 10/11/2025
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...
pgmustard.com
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.
001
Reposted by Michael Christofides
Andrew Atkinson @andyatkinson.com · 28/09/2025
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
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...
031
Reposted by Michael Christofides
Benedikt Deicke @benediktdeicke.com · 28/08/2025
Sometimes the trick to optimizing database queries is simple: Don't do stupid stuff.
081
Reposted by Michael Christofides
pgMustard @pgmustard.com · 20/08/2025
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. 💛
143
Reposted by Michael Christofides
GSM @turnstep.bsky.social · 28/07/2025
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
byteofdev.com
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
021
Reposted by Michael Christofides
Nik Samokhvalov @samokhvalov.bsky.social · 18/07/2025
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...
youtube.com
MultiXact member space exhaustion | Postgres.FM 151 | #PostgreSQL #Postgres podcast
YouTube video by PostgresTV
021
Reposted by Michael Christofides
Nik Samokhvalov @samokhvalov.bsky.social · 11/07/2025
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?...
youtu.be
Multigres | Postgres.FM 150 | #PostgreSQL #Postgres podcast
YouTube video by PostgresTV
042
Reposted by Michael Christofides
Nik Samokhvalov @samokhvalov.bsky.social · 09/07/2025
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
081
Reposted by Michael Christofides
Elizabeth Garrett Christensen @sqlliz.bsky.social · 08/07/2025
Postgres Meetup for All tomorrow www.meetup.com/postgres-mee...
031
Reposted by Michael Christofides
Nik Samokhvalov @samokhvalov.bsky.social · 07/07/2025
Amazing talk by Alexander Kukushkin about caveats and myths and truths of sync replication in Postgres. Everyone who works or plans to work with sync replication must watch it! www.youtube.com/watch?v=PFn9...
youtube.com
Myths and Truths about Synchronous Replication in PostgreSQL | POSETTE: An Event for Postgres 2025
YouTube video by Microsoft Developer
121
Reposted by Michael Christofides
pgMustard @pgmustard.com · 18/06/2025
There are a couple of online #PostgreSQL events today that look like they'll be great: 16:00 UTC — 10 Costly Database Performance Mistakes (and How to Fix Them) with Andy Atkinson www.meetup.com/postgres-mee... 19:00 UTC — 12 years of Postgres Weekly with Peter Cooper aka.ms/TalkingPostg...
131
Reposted by Michael Christofides
pgMustard @pgmustard.com · 18/06/2025
Hello, Bluesky!
121
Reposted by Michael Christofides
Jimmy Angelakos @vyruss.org · 12/06/2025
I have the great pleasure to announce the release of PostgreSQL Mistakes and How to Avoid Them in all formats! 🎉 To celebrate, @manningbooks.bsky.social is offering a Deal of the Day: 45% off my book and other selected titles! 👉 mng.bz/WrEx #PostgreSQL #Postgres #TechBooks #Database #OpenSource
mng.bz
Deal of the Day
Manning is an independent publisher of computer books, videos, and courses.
1112
Michael Christofides @michristofides.com · 07/05/2025
Next week (14th) I'll be joining the excellent Postgres Meetup for All to demo and discuss troubleshooting slow queries using EXPLAIN and external tools: www.meetup.com/postgres-mee... If you or your team could do with an intro or refresher, it would be great to see you there!
meetup.com
Postgres Meetup for All | Meetup
Calling all Postgres enthusiasts! Do you work with Postgres? Do you want to be more involved in the community? Share your learnings? Join our vibrant online community dedicated to PostgreSQL, the worl...
031
Reposted by Michael Christofides
Brent Ozar @brento.bsky.social · 29/04/2025
I'm proud to announce that I'm teaching a 1-day Postgres performance tuning class at the PASS Summit this year! Registration is open now, and if you register before May 13, you save big with early bird rates. passdatacommunitysummit.com/sessions/1103
passdatacommunitysummit.com
All sessions - PASS Data Community Summit
053
Michael Christofides @michristofides.com · 07/04/2025
Proud to be sponsoring PGDay UK. It’s lovely having a local event and it’s been great each time I’ve attended. It’ll be in London again on September 9th. Let me know if you’ll be there too! P.s. they’re currently looking for speakers (and sponsors!)
021
Reposted by Michael Christofides
Nik Samokhvalov @samokhvalov.bsky.social · 04/04/2025
Tomas Vondra is one of #PostgreSQL hackers with strong focus on performance and query optimization. Enjoyed this session a lot 📺 www.youtube.com/watch?v=hyMH... 🎙️ postgres.fm/episodes/per... It was inspired by this talk: "Where do performance cliffs come from?" www.youtube.com/watch?v=UzdA...
youtube.com
Performance cliffs | Postgres.FM 140 | #PostgreSQL #Postgres podcast
YouTube video by PostgresTV 💙💛
121
Michael Christofides @michristofides.com · 12/03/2025
While editing a podcast episode, I cringed twice whilst being confidently wrong about things. I need to work on that, or I need to stop criticising LLMs (or both!)
010
Michael Christofides @michristofides.com · 05/03/2025
After 6 years of hoping someone else would write this, I've finally succumbed to the little marketing devil on my shoulder and written about Postgres query plan visualization tools. It's hard to imagine someone more biased about any topic, but here goes: www.pgmustard.com/blog/postgre...
pgmustard.com
152
Reposted by Michael Christofides
Lukas Eder @lukaseder.bsky.social · 28/02/2025
Resisting the urge to document everything everywhere blog.jooq.org/resisting-th...
blog.jooq.org
Why I don't document quirks of a feature on the feature itself.
Users are often inclined to suggest documenting workarounds for quirks using unrelated features on the features themselves, and why I think this is wrong.
021
Michael Christofides @michristofides.com · 05/02/2025
It's incredibly common to see a Postgres query plan with all scans using indexes, and to think it's probably already optimal. I've written a new post for the pgMustard blog about why that often isn't the case, and some things you can look out for: www.pgmustard.com/blog/index-s...
pgmustard.com
Just because you’re getting an index scan, doesn't mean you can’t do better! - pgMustard
An issue I often see folks missing when reviewing query plans, is that they see that all of their scans involve indexes and they think that the query is likely already as fast (or efficient) as it can...
071
Michael Christofides @michristofides.com · 27/01/2025
I'm honoured to have been added to the PostgreSQL Contributors list, along with Nikolay Samokhvalov! www.postgresql.org/community/co... Thank you to everyone who makes Postgres what it is. I'm chuffed to be recognised as playing a small part in helping such a wonderful project ☺️✌️🐘
postgresql.org
PostgreSQL: Contributor Profiles
3131
Michael Christofides @michristofides.com · 10/01/2025
We just published an episode of Postgres FM on pg_squeeze with the wonderfully humble Antonín Houska. If you’re currently managing bloat manually or with pg_repack, I highly recommend checking this out: postgres.fm/episodes/pg_...
postgres.fm
Postgres FM | pg_squeeze
Michael and Nikolay are joined by Antonín Houska to discuss pg_squeeze — what it is, how it started, some of its features, and hopes of getting the functionality into core. Here are some links to t...
041
Reposted by Michael Christofides
Jelte Fennema-Nio @jeltef.nl · 10/01/2025
PgBouncer 1.24.0 is out, with many improvements. And prepared statement support is now turned on by default! github.com/pgbouncer/pg...
github.com
Release PgBouncer 1.24.0 · pgbouncer/pgbouncer
2025-01-10 - PgBouncer 1.24.0 - "New year, new bouncer" Features Add support for Type=notify-reload for systemd. This requires systemd version 253 or later. (#1148) Add KILL_CLIENT command t...
072
Reposted by Michael Christofides
Marco Slot @marcoslot.com · 09/01/2025
If you've become your company's designated Postgres expert, learning to navigate Postgres source code can be a useful skill, even if you're not a C programmer. For instance, the docs do not specify how the optimizer works, but there is a detailed readme in the source: github.com/postgres/pos...
github.com
postgres/src/backend/optimizer at master · postgres/postgres
Mirror of the official PostgreSQL GIT repository. Note that this is just a *mirror* - we don't work with pull requests on github. To contribute, please see https://wiki.postgresql.org/wiki/Subm...
1323
Michael Christofides @michristofides.com · 07/01/2025
If you have any Postgres performance issues, I'd love to hear about them and try to help: www.pgmustard.com/office-hours
pgmustard.com
Office hours - pgMustard
For January, I’m offering a private free call (up to 1 hour) to discus anything Postgres performance related.
010
Michael Christofides @michristofides.com · 24/12/2024
One of my better subject lines 🎄
Subject line reads explain (analyze, tidings on)

The email isn’t visible, and the screenshot is from 5 years ago, with a watermark from Timehop.
040
Reposted by Michael Christofides
Benoit Tigeot @benoittgt.bsky.social · 16/12/2024
"Enable BUFFERS with EXPLAIN ANALYZE by default" on #PostgreSQL 18. Yes ! git.postgresql.org/gitweb/?p=po...
git.postgresql.org
git.postgresql.org Git - postgresql.git/commit
041
Michael Christofides @michristofides.com · 12/12/2024
If you ever need to tidy up poor audio (especially speech, eg for podcasts) I highly recommend Auphonic: auphonic.com It can make echoey audio sound almost like a studio, and it can even remove things like sirens (when we have New York based guests), which blows my mind 👏
000
Michael Christofides @michristofides.com · 07/12/2024
For anyone looking for a podcast app for iOS I can’t recommend Overcast highly enough. The rewrite of it recently scared me, but it’s somehow now even better than it was before, and it keeps adding useful features that I didn’t know I needed (like “Go back” when accidentally jumping 😍)
030
Michael Christofides @michristofides.com · 29/11/2024
How do you do, fellow kids?
030