PlanetScale
Posts about the PlanetScale platform, MySQL, PostgreSQL, databases, and more.
DatabasesDistributed systems / cloudPerformance / optimization
- Posts
- 332 from 20 Mar 2020 to 29 Oct 2026
- Posting
- weekly (70 in the last year)
- Kind
- company blog
2026 63
- Designing a planned switchover for minimum disruption
- What was the turning point for Postgres?
- Shard design doesn't start from your tables
- I don't trust ON DELETE CASCADE
- Neki update: $50 Metal, read-only replicas, Azure, and more
- Sequences and other volatiles in Neki
- PlanetScale is now available on Azure
- What gets TOASTed in Postgres
- TIN v1.0.6: 2-3x faster, with support for stemming
- What today's software owes to Bronze Age clocks
- Introducing Dedicated Read Replicas for Postgres
- Building a faster, lazier router for Postgres
- Handling hot shards
- When to choose x86-64 vs aarch64
- TIN Postgres search is faster, better, and cheaper
- Anatomy of a (Postgres) search engine
- Blocking cutovers to save replication slots
- The architecture of Neki
- Introducing Lead: TIN-compatible full-text search for CI
- Introducing TIN: full-text search for Postgres
- 118 million queries per second on Neki
- Introducing Neki
- The lifecycle of a sharded Postgres query
- What is a Neki router?
- How one connection kills a database
- Problems with large tables in Postgres
- The history of Postgres sharding
- Poisoned Postgres connection pools
- What is a data topology?
- The dangers of Postgres subtransactions
- Concurrency vs. Throughput: why more parallelism can make databases slower
- Massively parallel Postgres backups
- Postgres backups under the hood
- What's new in Postgres 19
- Every UPDATE Leaves a Ghost: MVCC, Bloat, and VACUUM in PostgreSQL
- Making 768 servers look like 1
- When the Postgres query planner goes rogue
- Deadlocks and downtime
- One Postgres cluster, many apps
- The feedback loops behind Kubernetes
- See what your database is doing right now with Connections
- The only scalable delete in Postgres is DROP TABLE
- Egress problems and where to find them
- Problem solving with PlanetScale Insights
- Transparency in benchmarking
- On benchmarking
- RLS sounds great until it isn't
- Approaches to tenancy in Postgres
- Keeping a Postgres queue healthy
- Patterns for Postgres Traffic Control
- Graceful degradation in Postgres
- High memory usage in Postgres is good, actually
- Stripe Projects partnership: Provision PlanetScale Postgres and MySQL databases from the Stripe CLI
- Enhanced tagging in Postgres Query Insights
- Behind the scenes: How Database Traffic Control works
- Introducing Database Traffic Control — PlanetScale
- Scaling Postgres connections with PgBouncer
- Drizzle joins PlanetScale
- Video Conferencing with Postgres
- Faster PlanetScale Postgres connections with Cloudflare Hyperdrive
- Introducing the PlanetScale MCP server
- Database Transactions
- Automating our changelog with Cursor commands
2025 30
- Postgres 18 is now available
- Using MotherDuck with PlanetScale
- $50 PlanetScale Metal is GA for Postgres
- AI-Powered Postgres index suggestions
- $5 PlanetScale is live
- Announcing Vitess 23
- $50 PlanetScale Metal
- $5 PlanetScale
- Report on our investigation of the 2025-10-20 incident in AWS us-east-1 — PlanetScale
- Benchmarking Postgres 17 vs 18
- Larger than RAM Vector Indexes for Relational Databases
- Partnering with Cloudflare to bring you the fastest globally distributed applications
- Processes and Threads
- PlanetScale for Postgres is now GA
- Postgres High Availability with CDC
- Announcing Neki
- Caching
- The principles of extreme fault tolerance
- Announcing PlanetScale for Postgres
- Benchmarking Postgres
- Announcing Vitess 22
- PlanetScale vectors is now GA
- Faster interpreters in Go: Catching up with C++
- The Real Failure Rate of EBS
- IO devices and latency
- Upgrading Query Insights to Metal
- PlanetScale Metal: There’s no replacement for displacement
- Announcing PlanetScale Metal
- Automating cherry-picks between OSS and private forks
- Database Sharding
2024 42
- Anatomy of a Throttler, part 3
- Introducing sharding on PlanetScale with workflows
- Announcing Vitess 21
- Announcing the PlanetScale vectors public beta
- Anatomy of a Throttler, part 2
- B-trees and database indexes
- Instant deploy requests
- Anatomy of a Throttler, part 1
- Increase IOPS and throughput with sharding
- Tracking index usage with Insights
- Zero downtime migrations at petabyte scale
- Faster backups with sharding
- Building data pipelines with Vitess
- The State of Online Schema Migrations in MySQL
- Optimizing aggregation in the Vitess query planner
- Dealing with large tables
- Sharding strategies: directory-based, range-based, and hash-based
- Announcing Vitess 20
- Self-managed Vitess vs Managed Vitess with PlanetScale
- Achieving data consistency with the consistent lookup Vindex
- The MySQL adaptive hash index
- Introducing global replica credentials
- Profiling memory usage in MySQL
- Summer 2023: Fuzzing Vitess at PlanetScale
- How PlanetScale makes schema changes
- Identifying and profiling problematic MySQL queries
- The Problem with Using a UUID Primary Key in MySQL
- Announcing Vitess 19
- PlanetScale forever
- Introducing schema recommendations
- Foreign key constraints are now generally available
- Amazon Aurora Pricing: The many surprising costs of running an Aurora database
- Three common MySQL database design mistakes
- OAuth applications are now available to everyone
- Deprecating the Scaler plan
- PlanetScale branching vs. Amazon Aurora blue/green deployments
- Databases at scale
- Considerations for building a database disaster recovery plan
- Working with Geospatial Features in MySQL
- PlanetScale vs Amazon Aurora replication
- Introducing the Vantage and PlanetScale integration
- MySQL isolation levels and how they work
2023 92
- Introducing the schemadiff command line tool
- $ pscale ping
- Announcing foreign key constraints support
- The challenges of supporting foreign key constraints
- What is HTAP?
- Introducing Insights Anomalies
- Webhook security: a hands-on guide
- Three surprising benefits of sharding a MySQL database
- MySQL replication: Best practices and considerations
- A guide to HTML email with Ruby on Rails and Tailwind CSS
- Sharding for cost-effective database management
- PlanetScale ranks 188th in Deloitte’s top 500 fastest-growing companies
- Announcing Vitess 18
- Announcing the Fivetran integration
- Introducing webhooks
- What is MySQL replication and when should you use it?
- Sync user data between Clerk and a PlanetScale MySQL database
- Introducing database reports
- Distributed caching systems and MySQL
- What is MySQL partitioning?
- MySQL High Availability: Connection handling and concurrency
- Personalizing your onboarding with Markdoc
- PlanetScale vs. Amazon Aurora
- PlanetScale vs. Amazon RDS
- PlanetScale is bringing vector search and storage to MySQL
- PlanetScale Managed is now PCI compliant
- Guide to scaling your database: When to shard MySQL and Postgres
- Scaling hundreds of thousands of database clusters on Kubernetes
- The art and science of database sharding
- Streamline database management using the PlanetScale Netlify integration
- Emulating foreign key constraints with Drizzle relationships
- Horizontal sharding for MySQL made easy
- Deploying multiple schema changes at once
- What makes up a PlanetScale Vitess database?
- Vitess for us all
- Introducing IP restrictions
- Storing time series data in sharded MySQL to power Query Insights
- Is your database bleeding money?
- How PlanetScale unlocks developer productivity
- Incorporating databases into your CI/CD pipeline
- Performant database tree traversal with Rails
- Announcing PlanetScale Scaler Pro
- Sharding vs. partitioning: What’s the difference?
- Introduction to PlanetScale
- How PlanetScale keeps your data safe
- Announcing Vitess 17
- Action on your product data in real time
- Datetimes versus timestamps in MySQL
- Generated Hash Columns in MySQL
- Using PlanetScale with Serverless Framework Node applications on AWS
- PlanetScale joins AWS ISV Accelerate
- Announcing the Hightouch integration
- Using redundant conditions to unlock indexes in MySQL
- Optimizing query planning in Vitess: a step-by-step approach
- Pulling back the curtain: the new database overview page
- Increase developer productivity with Database DevOps
- PlanetScale is now available on the Google Cloud Marketplace
- Character sets and collations in MySQL
- MariaDB vs. MySQL
- Backward compatible database changes
- Why isn’t MySQL using my index?
- Serverless Laravel applications with AWS Lambda and PlanetScale
- Database branching: three-way merge for schema changes
- Query performance analysis with Insights
- MySQL for application developers
- Pagination in MySQL
- Safely making database schema changes
- What is database sharding and how does it work?
- An update to our workflow: safe migrations
- Declarative schema migrations
- Versioned schema migrations
- Announcing the PlanetScale GitHub Actions
- Building SaaS applications with PlanetScale + Netlify
- How to read MySQL EXPLAINs
- Connection pooling in Vitess
- How to Upgrade from MySQL 5.7 to 8.0
- Zero downtime Rails migrations with the PlanetScale Rails gem
- Preparing for MySQL 5.7 EOL
- DevOps with PlanetScale
- Using MySQL with SQLAlchemy: Hands-on Examples
- Improvements to database branch pages
- Announcing Vitess 16
- What are the disadvantages of database indexes?
- Faster MySQL with HTTP/3
- Migrating from Postgres to MySQL
- Introducing the PlanetScale API and OAuth applications
- Common MySQL errors and how to fix them
- MySQL scaling made easy
- What is the N+1 Query Problem and How to Solve it?
- Support’s notes from the field
- Solving N+1’s with Rails `exists?` queries
- Faster MySQL with HTTP/3
2022 70
- What is a query planner?
- Temporal workflows at scale: Part 2 — Sharding in production
- Rails’ safety mechanisms
- Building a multi-region Rails application with PlanetScale
- Secure your connection string with AWS KMS
- All of the tech PlanetScale Vitess replaces
- PlanetScale and HIPAA
- One million connections
- MySQL Integers: INT BIGINT and more
- Announcing Vitess 15
- What is Vitess: resiliency, scalability, and performance
- Laravel’s safety mechanisms
- Optimizing queries in arewefastyet
- Introduction to MySQL joins
- Indexing JSON in MySQL
- MySQL data types: VARCHAR and CHAR
- Debugging database errors with Insights
- The MySQL JSON data type
- Using the PlanetScale serverless driver with AWS Lambda functions
- Declarative MySQL schemas with Atlas CLI
- Build a multi-stage pipeline with PlanetScale and AWS
- TAOBench: Running social media workloads on PlanetScale
- Gated Deployments: addressing the complexity of schema deployments at scale
- One million queries per second with MySQL
- Zero downtime Laravel migrations
- Run SQL script files on a PlanetScale database
- How product design works at PlanetScale
- Introducing the PlanetScale serverless driver for JavaScript
- Introducing FastPage: Faster offset pagination for Rails apps
- How to kill Sidekiq jobs in Ruby on Rails
- Database DevOps
- How PlanetScale prevents MySQL downtime
- Ruby on Rails: 3 tips for deleting data at scale
- The Slotted Counter Pattern
- Behind the scenes: How we built Password Roles
- Safely dropping MySQL tables
- Temporal Workflows at scale with PlanetScale: Part 1
- Announcing Teams: An easier way to manage database administrator access
- We now display PlanetScale system status directly in your dashboard
- How do Database Indexes Work?
- Getting started with the PlanetScale CLI
- Consensus algorithms at scale: Part 8 - Closing thoughts
- Deploy requests now alert on potential unwanted changes
- Consensus algorithms at scale: Part 7 - Propagating requests
- Identifying slow Rails queries with sqlcommenter
- Announcing Vitess 14
- Grouping and aggregations on Vitess
- Consensus algorithms at scale: Part 6 - Completing requests
- Introducing PlanetScale Insights: Advanced query monitoring
- Extract, load, and transform your data with PlanetScale Connect
- Introducing PlanetScale Portals: Read-only regions
- The operational relational schema paradigm
- Consensus algorithms at scale: Part 5 - Handling races
- Consensus algorithms at scale: Part 4 - Establishment and revocation
- Generics can make your Go code slower
- Why we chose NanoIDs for PlanetScale’s API
- Revert a migration without losing data
- Behind the scenes: How schema reverts work
- How to Prevent SQL Injection Attacks in Node.js
- Database schema design 101 for relational databases
- Announcing Vitess 13
- How we made PlanetScale’s background jobs self-healing
- Build a Laravel application with a MySQL database
- How to seed a database with Prisma and Next.js
- Defining the database maturity model
- Introduction to Laravel caching
- Using the PlanetScale CLI with GitHub Actions workflows
- Using entropy for user-friendly strong passwords
- How to set up Next.js with Prisma and PlanetScale
- How our Rails test suite runs in 1 minute on Buildkite
2021 20
- Introducing Prisma’s Data Platform PlanetScale integration
- Bring your data to PlanetScale
- PlanetScale is GA
- Introducing PlanetScale Managed on AWS and GCP
- New PlanetScale pricing: Scaler plan upgrades and our new enterprise plan
- Comparing AWS’s RDS and PlanetScale
- Quick deploys using the Web Console
- Optimizing SQL with Query Statistics
- NoneSQL All the DevEx
- Automatically copy migration data in PlanetScale branches
- Building PlanetScale with PlanetScale
- Connect any MySQL client to PlanetScale using Connection Strings
- PlanetScale on Vitess
- Sam Lambert appointed new CEO of PlanetScale
- The promises and realities of the relational database model
- Integrating PlanetScale with Vercel in a few steps
- Serverless finally has a database
- Non-Blocking Schema Changes
- Announcing PlanetScale: The database for developers.
- Announcing Vitess 9.0
2020 15
- Announcing Vitess 8.0
- Pitfalls of isolation levels in distributed databases
- MySQL semi-sync replication: durability consistency and split brains
- Consensus algorithms at scale: Part 3 - Use cases
- Orchestrator failure detection and recovery: New Beginnings
- Consensus algorithms at scale: Part 2 - Rules of consensus
- On joining PlanetScale and the vision of open source database infrastructure
- Consensus algorithms at scale: Part 1 - Introduction
- Learn Horizontal Scaling on PlanetScaleDB with Vitess — Rate Puppies in a Rust app with Sharded MySQL Database
- Announcing Vitess 7
- Debunking 3 myths about Vitess fault tolerance
- Announcing Vitess 6
- ACID Transactions are not just for banks — the Vitess approach
- Videos: Intro to Vitess—its powerful capabilities and how to get started
- PlanetScale migrates open source Vitess test suite from Python to Go