Some stuff I've written:
- https://pscale.link/io
- https://pscale.link/btrees
- https://pscale.link/sharding
Find me at benjdd.com
Our new extension adds a safety net to Postgres, catching dangerous queries before they run.
www.youtube.com/watch?v=noPn...
Our new extension adds a safety net to Postgres, catching dangerous queries before they run.
www.youtube.com/watch?v=noPn...
Every time you interact with a website, database transactions are keeping your data consistent, safe, and isolated.
I wrote an interactive guide to how they work ⬇️
Every time you interact with a website, database transactions are keeping your data consistent, safe, and isolated.
I wrote an interactive guide to how they work ⬇️
Intuitively, most would say "more work_mem = better" for building indexes, but this hurts performance due to L3 cache behavior.
Great article by Tomas Vondra.
vondra.me/posts/dont-g...
Intuitively, most would say "more work_mem = better" for building indexes, but this hurts performance due to L3 cache behavior.
Great article by Tomas Vondra.
vondra.me/posts/dont-g...
They’re used by MySQL, and Postgres uses an R-tree-like structure via GiST in PostGIS.
🧵
They’re used by MySQL, and Postgres uses an R-tree-like structure via GiST in PostGIS.
🧵
Last year I benchmarked Postgres 17 vs 18 to test the initial io_uring upgrades. I was surprised to see they weren't always a clear win for TPC-C.
This paper studies the potential, and the future looks good.
Last year I benchmarked Postgres 17 vs 18 to test the initial io_uring upgrades. I was surprised to see they weren't always a clear win for TPC-C.
This paper studies the potential, and the future looks good.
Managing a system for a single use-case (databases or otherwise) can make it seem like a perfect solution. It just might be for that narrow environment!
At scale you see all the edge cases because you're operating on so many workloads.
Managing a system for a single use-case (databases or otherwise) can make it seem like a perfect solution. It just might be for that narrow environment!
At scale you see all the edge cases because you're operating on so many workloads.
Merkle trees!
A great data structure for tracking file changes, facilitating incremental sync with remote servers.
Say we want to track changes to a codebase at a per-file level. We compute a hash for each source file, and these become leaf nodes.
Merkle trees!
A great data structure for tracking file changes, facilitating incremental sync with remote servers.
Say we want to track changes to a codebase at a per-file level. We compute a hash for each source file, and these become leaf nodes.
Listen to me talk about data organization instead :)
Friday's stream was a fun one. Sequential writes, binary search trees, block I/O devices, and B-trees. The latest slice dropped this afternoon.
www.youtube.com/watch?v=84b_...
Listen to me talk about data organization instead :)
Friday's stream was a fun one. Sequential writes, binary search trees, block I/O devices, and B-trees. The latest slice dropped this afternoon.
www.youtube.com/watch?v=84b_...
LLMs make writing code cheaper. This places greater emphasis on architectural choices, understanding design tradeoffs, ensuring security, and building things people actually need.
Great example: yesterday I read the Dynamo paper.
LLMs make writing code cheaper. This places greater emphasis on architectural choices, understanding design tradeoffs, ensuring security, and building things people actually need.
Great example: yesterday I read the Dynamo paper.
Instead, learn database internals on YouTube.
Speaking of which, another dropped today (link below).
Instead, learn database internals on YouTube.
Speaking of which, another dropped today (link below).
This morning I read Bartosz Ciechanowski's article on the subject. It's the best explainer I've seen. The interactivity really sells it.
Great article to kick off your year with:
ciechanow.ski/cameras-and-...
This morning I read Bartosz Ciechanowski's article on the subject. It's the best explainer I've seen. The interactivity really sells it.
Great article to kick off your year with:
ciechanow.ski/cameras-and-...
Latest YT → fun overview of this aspect of databases.
www.youtube.com/watch?v=cNw9...
Latest YT → fun overview of this aspect of databases.
www.youtube.com/watch?v=cNw9...
MySQL and Postgres use quite different engineering techniques are used to address the same problem. Undo log vs multiple tuple versions.
Another great one by Jeremy Cole.
blog.jcole.us/2014/04/16/t...
MySQL and Postgres use quite different engineering techniques are used to address the same problem. Undo log vs multiple tuple versions.
Another great one by Jeremy Cole.
blog.jcole.us/2014/04/16/t...
I'm aiming for more "regular" YouTubing in 2026, much of which will be chopping up interesting segments from the streams.
Speaking of which: new video has DROPPED!
www.youtube.com/watch?v=wdJe...
I'm aiming for more "regular" YouTubing in 2026, much of which will be chopping up interesting segments from the streams.
Speaking of which: new video has DROPPED!
www.youtube.com/watch?v=wdJe...
Binary search trees were invented in 1960. It seems obvious today, but this was a fresh way of thinking about ordered data on computers.
Binary search trees were invented in 1960. It seems obvious today, but this was a fresh way of thinking about ordered data on computers.
Auto-completion, syntax highlighting, and just generally much better usability.
If you're connecting to your DB from the terminal, get these asap.
Auto-completion, syntax highlighting, and just generally much better usability.
If you're connecting to your DB from the terminal, get these asap.
We've all used software that's slow and becomes a huge turnoff. Fast software makes for happy users. Or at least, avoids making them mad!
We've all used software that's slow and becomes a huge turnoff. Fast software makes for happy users. Or at least, avoids making them mad!
That's 20 years of database performance!
I haven't started beyond "planning with Claude," but I expect the hardest part to be building old versions from source. Much has changed in compilers + unix since 2005.
Who's done this? Suggestions?
That's 20 years of database performance!
I haven't started beyond "planning with Claude," but I expect the hardest part to be building old versions from source. Much has changed in compilers + unix since 2005.
Who's done this? Suggestions?
Incredible article on when and why to use PgBouncer.
Includes a great explanation of how increasing direct connections leads to more contention → degraded performance. (+ benchmarks too!)
Incredible article on when and why to use PgBouncer.
Includes a great explanation of how increasing direct connections leads to more contention → degraded performance. (+ benchmarks too!)
This week I re-read the iconic LFS paper by Rosenblum / Ousterhout.
The differences between I/O demands on a database vs a general-purpose FS are neat to study.
This week I re-read the iconic LFS paper by Rosenblum / Ousterhout.
The differences between I/O demands on a database vs a general-purpose FS are neat to study.
Who needs ACID, relational schema, foreign keys, B-tree indexes, log-based commits, MVCC, replication, and failovers?
We've been overthinking the database. Keep it simple.
Who needs ACID, relational schema, foreign keys, B-tree indexes, log-based commits, MVCC, replication, and failovers?
We've been overthinking the database. Keep it simple.
They’re great for inverting the typical use case.
Instead of mapping “the row with ID 2 contains ‘become a database expert’” you flip it to say “The word ‘database’ maps to the rows with IDs 1, 2, and 3 and ‘expert’ maps to the row with ID 2.”
They’re great for inverting the typical use case.
Instead of mapping “the row with ID 2 contains ‘become a database expert’” you flip it to say “The word ‘database’ maps to the rows with IDs 1, 2, and 3 and ‘expert’ maps to the row with ID 2.”
- Smaller compute sizes at a lower price point
- More local-NVMe storage size options
Today we've delivered both. Happy databasing.
- Smaller compute sizes at a lower price point
- More local-NVMe storage size options
Today we've delivered both. Happy databasing.