Backward compatible database changes
Engineering

Backward compatible database changes

Learn about safely using the expand, migrate, and contract pattern to make database schema changes without downtime and data loss.

Taylor Barnett
May 9, 2023
Why isn’t MySQL using my index?
Engineering

Why isn’t MySQL using my index?

There are several reasons why MySQL might not consider your index, and in this article we’ll explore some of the most common ones.

Aaron Francis
May 4, 2023
Serverless Laravel applications with AWS Lambda and PlanetScale
Engineering

Serverless Laravel applications with AWS Lambda and PlanetScale

Learn how to create serverless Laravel applications by deploying them to AWS Lambda and using PlanetScale as the database.

Matthieu Napoli
May 3, 2023
Database branching: three-way merge for schema changes
Engineering

Database branching: three-way merge for schema changes

Learn how PlanetScale uses Git-like three-way diff to resolve schema change conflicts across database branches.

Shlomi Noach
April 26, 2023
Pagination in MySQL
Engineering

Pagination in MySQL

An overview of the different ways to paginate in MySQL including limit/offset pagination and cursor pagination plus the pros and cons of each.

Aaron Francis
April 18, 2023
How does database sharding work?
Engineering

How does database sharding work?

Learn what sharding is, how sharding works, and some common sharding frameworks and tools.

Justin Gage
April 6, 2023
Connection pooling in Vitess
Engineering

Connection pooling in Vitess

Connection pooling reduces the overhead of establishing new database connections. Learn how connection pooling works and how it is handled in Vitess.

Harshit Gangal
March 27, 2023
Zero downtime Rails migrations with the PlanetScale Rails gem
Engineering

Zero downtime Rails migrations with the PlanetScale Rails gem

Learn about the Ruby on Rails workflow that protects your database and application from accidental downtime and data loss.

Mike Coutermarsh
March 20, 2023
What are the disadvantages of database indexes?
Engineering

What are the disadvantages of database indexes?

Learn about some of the possible downsides of using database indexes and how to remove unused database indexes in MySQL.

JD Lien
February 17, 2023
Solving N+1’s with Rails `exists?` queries
Engineering

Solving N+1’s with Rails `exists?` queries

Learn how to solve your Rails applications N+1’s caused by `exists?` queries.

Mike Coutermarsh
January 10, 2023
Faster MySQL with HTTP/3
Engineering

Faster MySQL with HTTP/3

In this article, we explore how our HTTP/3 API compares to the latency of a traditional MySQL client.

Matt Robenolt
January 4, 2023
What is a query planner?
Engineering

What is a query planner?

Learn how query planning works and why query planners are important.

Andres Taylor
December 15, 2022
Temporal workflows at scale: Part 2 — Sharding in production
Engineering

Temporal workflows at scale: Part 2 — Sharding in production

Learn how PlanetScale simplifies the process of running Temporal in production by looking at how our customer runs heavy production workloads.

Savannah Longoria
December 14, 2022
Rails’ safety mechanisms
Engineering

Rails’ safety mechanisms

A comprehensive overview of Rails’ many safety features that can help you prevent painful mistakes.

Jason Charnes
December 12, 2022
Building a multi-region Rails application with PlanetScale
Engineering

Building a multi-region Rails application with PlanetScale

Learn how to configure your database in a multi-region Rails application to decrease latency across the globe.

Mike Coutermarsh
December 8, 2022
How PlanetScale Boost serves your SQL queries instantly
Engineering

How PlanetScale Boost serves your SQL queries instantly

Learn how we use a partial materialization engine for database caching alongside your database.

Vicent Marti
November 15, 2022
One million connections
Engineering

One million connections

Learn how to use PlanetScale to safely include your database in your serverless functions without hitting connection limits in MySQL.

Liz van Dijk
November 1, 2022
MySQL Integers: INT, BIGINT, and more
Engineering

MySQL Integers: INT, BIGINT, and more

Gain a deeper understanding of the MySQL integer types by exploring the different options (INT, BIGINT, MEDIUMINT, etc) and how they are stored.

Brian Morrison II
October 31, 2022
Vitess for the rest of us
Engineering

Vitess for the rest of us

How Vitess can increase your database‘s resilience, scalability, and performance

Brian Morrison II
October 21, 2022
Laravel’s safety mechanisms
Engineering

Laravel’s safety mechanisms

A comprehensive overview of Laravel’s many safety features that can help you prevent painful mistakes.

Aaron Francis
October 19, 2022
Optimizing queries in arewefastyet
Engineering

Optimizing queries in arewefastyet

Learn how we detected and optimized two slow queries in arewefastyet using PlanetScale Insights.

Florent Poinsard
Harshit Gangal
October 11, 2022
Indexing JSON in MySQL
Engineering

Indexing JSON in MySQL

Learn how to index JSON in MySQL with generated columns and functional indexes.

Aaron Francis
October 4, 2022
MySQL data types: VARCHAR and CHAR
Engineering

MySQL data types: VARCHAR and CHAR

In this entry of the series, we explore using VARCHAR and CHAR data types in your database and give some pointers on which type is best to use and when.

Brian Morrison II
September 30, 2022
The MySQL JSON data type
Engineering

The MySQL JSON data type

Learn what the MySQL JSON data type is, when to use MySQL JSON, and some caveats to using JSON documents in relational databases.

Mike Stojan
September 23, 2022
TAOBench: Running social media workloads on PlanetScale
Engineering

TAOBench: Running social media workloads on PlanetScale

Learn how we used TAOBench with PlanetScale to benchmark social media workloads

Liz van Dijk
September 8, 2022
One million queries per second with MySQL
Engineering

One million queries per second with MySQL

Discover how PlanetScale handles one million queries per second (QPS) with horizontal sharding in MySQL

Jonah Berquist
September 1, 2022
Zero downtime Laravel migrations
Engineering

Zero downtime Laravel migrations

Learn how to run no downtime non-blocking schema migrations in your production Laravel app with PlanetScale.

Holly Guevara
August 29, 2022
How product design works at PlanetScale
Engineering

How product design works at PlanetScale

Learn about the lightweight and highly collaborative process our product design team follows to ship quickly at PlanetScale.

Jason Long
August 22, 2022
Introducing FastPage: Faster offset pagination for Rails apps
Engineering

Introducing FastPage: Faster offset pagination for Rails apps

Introducing FastPage, a new gem for ActiveRecord that speeds up deep pagination queries.

Mike Coutermarsh
August 16, 2022
How to kill Sidekiq jobs in Ruby on Rails
Engineering

How to kill Sidekiq jobs in Ruby on Rails

Learn how PlanetScale uses a custom middleware to kill our Sidekiq jobs in production without relying on deploys.

Elom Gomez
August 15, 2022
Database DevOps
Engineering

Database DevOps

Learn how PlanetScale enables databases to seamlessly fit into the DevOps lifecycle.

Sam Lambert
August 8, 2022
Ruby on Rails: 3 tips for deleting data at scale
Engineering

Ruby on Rails: 3 tips for deleting data at scale

Learn how to delete data in large Rails apps with destroy_async, delete, destroy, and scheduled cron jobs.

Mike Coutermarsh
August 1, 2022
The Slotted Counter Pattern
Engineering

The Slotted Counter Pattern

Handle MySQL increment counter bursts with the Slotted Counter Pattern

Sam Lambert
July 28, 2022
Behind the scenes: How we built Password Roles
Engineering

Behind the scenes: How we built Password Roles

Learn how we leveraged Vitess ACLs and VTTablet to build our password roles functionality

Phani Raju
July 27, 2022
Temporal Workflows at scale with PlanetScale: Part 1
Engineering

Temporal Workflows at scale with PlanetScale: Part 1

Learn how to create a more reliable workflow with Temporal and PlanetScale

Savannah Longoria
July 22, 2022
How do database indexes work?
Engineering

How do database indexes work?

Learn how database indexes work under the hood and how they can be used to speed up queries

Justin Gage
July 14, 2022
Consensus algorithms at scale: Part 8 - Closing thoughts
Engineering

Consensus algorithms at scale: Part 8 - Closing thoughts

In the final installment of the consensus algorithm series, we pull everything together with some final thoughts.

Sugu Sougoumarane
July 7, 2022
Consensus algorithms at scale: Part 7 - Propagating requests
Engineering

Consensus algorithms at scale: Part 7 - Propagating requests

In part 7 of the Consensus algorithm series, we combine everything we’ve worked at to cover propagating requests

Sugu Sougoumarane
July 1, 2022
Identifying slow Rails queries with sqlcommenter
Engineering

Identifying slow Rails queries with sqlcommenter

Learn how to use sqlcommenter with Rails

Mike Coutermarsh
Iheanyi Ekechukwu
June 29, 2022
Consensus algorithms at scale: Part 6 - Completing requests
Engineering

Consensus algorithms at scale: Part 6 - Completing requests

In part 6 of the Consensus algorithms series, we look at how to handle request completions

Sugu Sougoumarane
June 21, 2022
The operational relational schema paradigm
Engineering

The operational relational schema paradigm

An exploration of the current landscape of schema change methodology and what the future should look like.

Shlomi Noach
May 9, 2022
Feature storytelling with Framer Motion
Engineering

Feature storytelling with Framer Motion

Learn how we used Framer Motion to create our schema revert feature’s narrative animation.

Derek Briggs
May 5, 2022
Consensus algorithms at scale: Part 5 - Handling races
Engineering

Consensus algorithms at scale: Part 5 - Handling races

In part 5 of our consensus algorithms series, we discuss how we handle race conditions and forward progress requirements.

Sugu Sougoumarane
April 28, 2022
Consensus algorithms at scale: Part 4 - Establishment and revocation
Engineering

Consensus algorithms at scale: Part 4 - Establishment and revocation

In part 4 of the consensus algorithms series, we look at how algorithm leaders are established and revoked.

Sugu Sougoumarane
April 6, 2022
Generics can make your Go code slower
Engineering

Generics can make your Go code slower

Go 1.18 is here, and with it, the first release of the long-awaited implementation of Generics is finally ready for production usage. Generics are a frequently requested feature that has been highly contentious throughout the Go community.

Vicent Marti
March 30, 2022
Why we chose NanoIDs for PlanetScale’s API
Engineering

Why we chose NanoIDs for PlanetScale’s API

Learn why PlanetScale used NanoID to generate obscure and URL friendly identifiers.

Mike Coutermarsh
March 29, 2022
Behind the scenes: How schema reverts work
Engineering

Behind the scenes: How schema reverts work

Learn how we used VReplication to allow for migration reverts with data retention.

Holly Guevara
Shlomi Noach
March 24, 2022
How we made PlanetScale’s background jobs self-healing
Engineering

How we made PlanetScale’s background jobs self-healing

How to build self-healing background jobs into your application with background queueing systems, like Sidekiq.

Mike Coutermarsh
February 17, 2022
Introduction to Laravel caching
Engineering

Introduction to Laravel caching

Learn how to speed up your Laravel applications with caching.

Holly Guevara
February 9, 2022
Using entropy for user-friendly strong passwords
Engineering

Using entropy for user-friendly strong passwords

When implementing user authentication with passwords, throw out the password rules you know.

Mike Coutermarsh
January 24, 2022
How our Rails test suite runs in 1 minute on Buildkite
Engineering

How our Rails test suite runs in 1 minute on Buildkite

Learn how we use minitest and FactoryBot with parallel tests to get our Rails test suite to run in 1 minute on Buildkite.

Mike Coutermarsh
January 18, 2022
NoneSQL, All the DevEx
Engineering

NoneSQL, All the DevEx

Databases will win based on superior developer experience, not what is under the hood.

Justin Gage
August 27, 2021
Building PlanetScale with PlanetScale
Engineering

Building PlanetScale with PlanetScale

How PlanetScale uses database branching and non-blocking schema changes to build PlanetScale.

Iheanyi Ekechukwu
August 18, 2021
The promises and realities of the relational database model
Engineering

The promises and realities of the relational database model

The relational model is one of the oldest surviving models in computer science but it has some drawbacks that need to be addressed.

Shlomi Noach
July 13, 2021
Horizontal Sharding for MySQL Made Easy
Engineering

Horizontal Sharding for MySQL Made Easy

For developers building out a web application, a transactional datastore is the obvious and proven choice, but with success comes scale limitations.

Lucy Burns
October 22, 2020
Pitfalls of isolation levels in distributed databases
Engineering

Pitfalls of isolation levels in distributed databases

The more loosely coupled components are in a distributed system, the better it scale

Sugu Sougoumarane
October 4, 2020
Consensus algorithms at scale: Part 3 - Use cases
Engineering

Consensus algorithms at scale: Part 3 - Use cases

Consensus Use Cases

Sugu Sougoumarane
September 26, 2020
Orchestrator failure detection and recovery: New Beginnings
Engineering

Orchestrator failure detection and recovery: New Beginnings

how the new integration adds new failure detection and recovery scenarios, making orchestrator’s operation goal-oriented.

Shlomi Noach
September 19, 2020
Consensus algorithms at scale: Part 2 - Rules of consensus
Engineering

Consensus algorithms at scale: Part 2 - Rules of consensus

The Rules of Consensus

Sugu Sougoumarane
September 9, 2020
Consensus algorithms at scale: Part 1 - Introduction
Engineering

Consensus algorithms at scale: Part 1 - Introduction

This is a multi-part blog series and will be updated with links to the corresponding posts.

Sugu Sougoumarane
August 28, 2020
Learn Horizontal Scaling on PlanetScaleDB with Vitess — Rate Puppies in a Rust app with Sharded MySQL Database
Engineering

Learn Horizontal Scaling on PlanetScaleDB with Vitess — Rate Puppies in a Rust app with Sharded MySQL Database

Rate Puppies in a Rust app with Sharded MySQL Database

Jiten Vaidya
August 14, 2020
ACID Transactions are not just for banks - the Vitess approach
Engineering

ACID Transactions are not just for banks - the Vitess approach

Build systems that do not lose data. Vitess prevents asynchronous failure in two ways: (1) ensuring that the changes are saved locally on storage, with the redo log and binary logs safely written to disk and (2) making use of semi-synchronous replication.

Jiten Vaidya
April 29, 2020