Blog
Simeon Griggs [@simeonGriggs] |
Deadlocks happen when transactions block each other. Learn how they escalate into downtime, how to reduce them through better queries and retry logic, and how Traffic Control can protect your database from your application. →
Simeon Griggs [@simeonGriggs] |
Yo, I heard you liked databases, so we put logical databases in your database cluster so you can database while you database →
Fatih Arslan [@fatih] |
Kubernetes is a framework for feedback controllers: write down what you want, observe what exists, make the next change, and repeat. →
Tom Pang |
Large DELETEs add work instead of reclaiming it. Structure your database so deletion becomes DROP TABLE or TRUNCATE. →
Transparent database benchmarks help customers make better decisions and push vendors to build better products. →
Benchmarking is hard. Done wrong it is very misleading, and unfortunately it is frequently done wrong. Let's explore how not to make silly mistakes. →
Josh Brown [@0ximjosh] |
PostgreSQL's Row Level Security sounds like a clean way to enforce access control at the database layer, but the foot-guns, pooling incompatibilities, and performance traps often make it more trouble than it's worth. →
Simeon Griggs [@simeonGriggs] |
There are many ways to slice a Postgres database for multi-tenant applications. Let's look at the three most common approaches and the trade-offs. →
Simeon Griggs [@simeonGriggs] |
Dead tuples from high-churn job queues can silently degrade your Postgres database when vacuum falls behind—especially alongside competing workloads. Traffic Control keeps cleanup on track. →
Not all traffic is created equal.When a database is overwhelmed, you want the important queries to keep executing, even if that means shedding lower-priority work.This is a much better outcome than the alternative: a total database outage. →
Simeon Griggs [@simeonGriggs] |
A high memory percentage in PlanetScale Postgres is not necessarily a problem. Let's compare how memory and CPU usage are different, how not all memory usage is created equal, and which signals actually require attention. →
Introducing query tagging improvements in Postgres Query Insights →
Learn how Traffic Control enforces real-time limits on Postgres queries. →
PgBouncer is the perfect pairing for Postgres's biggest weakness: connection management. Tuning it just right is important to make this work well, and here we cover everything you need to know →
What are database transactions and how do SQL databases isolate one transaction from another? →
How PlanetScale uses Cursor commands to automate our changelog entries →
Introducing AI-powered index suggestions for PostgreSQL →
On 2025-10-20, there was an incident that affected PlanetScale, initially caused by DNS misconfiguration in one of PlanetScale’s service providers, followed by several hours of capacity constraints and network instability. →
Postgres 18 brings a significant improvement to read performance via async I/O and I/O worker threads. Here we compare its performance to Postgres 17. →
A new hybrid design for scalable vector indexes and a reference implementation in MySQL →
Processes and threads are fundamental abstrations for operating systems. Learn how they work and how they impact database performance in this interactive article. →
Why a lagging client can stall or break failover, and how MySQL’s GTID model avoids it. →
Every time you use a computer, the cache is working to ensure your experience is fast. →
The principles and processes we follow for fault tolerance. →