![Optimizing aggregation in the Vitess query planner](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Foptimizing-aggregation-in-the-vitess-query-planner%2Fhero.jpg&w=3840&q=75)
Optimizing aggregation in the Vitess query planner
The Vitess query planner takes multiple passes over a query plan to optimize it as much as possible before execution. A recent tricky bug report led to an improvement in how the optimizer functions.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fandres-taylor.jpg&w=256&q=75)
![Dealing with large tables](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fdealing-with-large-tables%2Fhero.jpg&w=3840&q=75)
Dealing with large tables
Large databases often have a small number of very large tables that makes scaling difficult. How can you scale with these while keeping your database performant? This article covers three techniques.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbenjamin-dicken.jpeg&w=256&q=75)
Changelog
Go to changelogWebhooks: New pending_cutover event for deploy requests
Deploy requests can now send a webhook when the deployment is ready to cutover.
Read moreDeploy requests: auto-delete branch
Deploy requests are now able to automatically delete the branch after successful completion.
Read moreDeprecation: legacy connection strings
We will be deprecating legacy connection strings used by a small number of databases.
Read more![Sharding strategies: directory-based, range-based, and hash-based](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Ftypes-of-sharding%2Ftypes-of-sharding-blog.jpg&w=3840&q=75)
Sharding strategies: directory-based, range-based, and hash-based
Learn about the different types of sharding: directory-based, range-based, and hash-based plus some of the pros and cons of each.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fholly-guevara.jpeg&w=256&q=75)
![Announcing Vitess 20](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fannouncing-vitess-20%2Fvitess-20-blog.jpg&w=3840&q=75)
Announcing Vitess 20
Vitess 20 is now generally available.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fvitess-engineering-team.png&w=256&q=75)
![Self-managed Vitess vs Managed Vitess with PlanetScale](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fvitess-vs-planetscale%2Fplanetscale-vs-vitess-hero.jpg&w=3840&q=75)
Self-managed Vitess vs Managed Vitess with PlanetScale
PlanetScale and Vitess have a close relationship. Learn what it looks like to run Vitess on your own vs using PlanetScale. We cover cost, time to implement, management, and more.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fholly-guevara.jpeg&w=256&q=75)
![Achieving data consistency with the consistent lookup Vindex](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fvitess-consistent-lookup-vindex%2Fhero.jpg&w=3840&q=75)
Achieving data consistency with the consistent lookup Vindex
How we implemented a consistent lookup Vindex in Vitess to ensure data consistency without using 2PC
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fharshit-gangal.jpeg&w=256&q=75)
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fdeepthi-sigireddi.jpeg&w=256&q=75)
![The MySQL adaptive hash index](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fthe-mysql-adaptive-hash-index%2Fhero.jpg&w=3840&q=75)
The MySQL adaptive hash index
The adaptive hash index help to improve performance of the already-fast B-tree lookups
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbenjamin-dicken.jpeg&w=256&q=75)
![Introducing global replica credentials](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fintroducing-global-replica-credentials%2Fglobal-replica-credentials-blog.png&w=3840&q=75)
Introducing global replica credentials
With global replica credentials, you can now automatically route reads to the closest replica.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fmatt-robenolt.png&w=256&q=75)
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fiheanyi-ekechukwu.jpeg&w=256&q=75)
![Profiling memory usage in MySQL](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fprofiling-memory-usage-in-mysql%2Fhero.jpg&w=3840&q=75)
Profiling memory usage in MySQL
Learn how to visualize the memory usage of a MySQL connection
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbenjamin-dicken.jpeg&w=256&q=75)
![Summer 2023: Fuzzing Vitess at PlanetScale](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fsummer-2023-fuzzing-vitess-at-planetscale%2Fhero.jpg&w=3840&q=75)
Summer 2023: Fuzzing Vitess at PlanetScale
My experience working as an intern in the Vitess query serving team for PlanetScale.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Farvind-murty.jpg&w=256&q=75)
![How PlanetScale makes schema changes](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fhow-planetscale-makes-schema-changes%2Fhero.jpg&w=3840&q=75)
How PlanetScale makes schema changes
Learn how PlanetScale uses GitHub Actions and PlanetScale to automate schema changes on our own application.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fmike-coutermarsh.jpeg&w=256&q=75)
![Identifying and profiling problematic MySQL queries](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fidentifying-and-profiling-problematic-mysql-queries%2Fhero.jpg&w=3840&q=75)
Identifying and profiling problematic MySQL queries
MySQL has built-in functionality for collecting statistics on and profiling your MySQL queries. Learn how to leverage these features to identify problems.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbenjamin-dicken.jpeg&w=256&q=75)
![The Problem with Using a UUID Primary Key in MySQL](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fthe-problem-with-using-a-uuid-primary-key-in-mysql%2Fthe-problem-with-using-a-uuid-primary-key-in-mysql-blog.jpg&w=3840&q=75)
The Problem with Using a UUID Primary Key in MySQL
Understand the different versions of UUIDs and why using them as a primary key in MySQL can hurt database performance.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbrian-morrison.jpeg&w=256&q=75)
![Announcing Vitess 19](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fannouncing-vitess-19%2Fvitess-19-blog.jpg&w=3840&q=75)
Announcing Vitess 19
Vitess 19 is now generally available.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fvitess-engineering-team.png&w=256&q=75)
![One million connections](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fone-million-connections%2Fone-million-connections-blog.jpg&w=3840&q=75)
One million connections
Learn how to use PlanetScale to safely include your database in your serverless functions without hitting connection limits in MySQL.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fliz-van-dijk.jpg&w=256&q=75)
![Building PlanetScale with PlanetScale](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fbuilding-planetscale-with-planetscale%2Fd07dc02dd6374860e143feacedc5729a637b3487-1552x872.jpg&w=3840&q=75)
Building PlanetScale with PlanetScale
How PlanetScale uses database branching and non-blocking schema changes to build PlanetScale.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fiheanyi-ekechukwu.jpeg&w=256&q=75)
![PlanetScale forever](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fplanetscale-forever%2Fps_blog.jpg&w=3840&q=75)
PlanetScale forever
PlanetScale is committed to providing a reliable and sustainable platform for our customers, not just in the short-term, but forever. For this reason, we are prioritizing profitability.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fsam-lambert.jpeg&w=256&q=75)
![Introducing schema recommendations](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fintroducing-schema-recommendations%2Fschema-recommendations-blog.jpg&w=3840&q=75)
Introducing schema recommendations
Automatically receive recommendations to improve database performance, reduce memory and storage, and improve your schema based on production database traffic.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Ftaylor-barnett.jpg&w=256&q=75)
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Frafer.jpeg&w=256&q=75)
![Foreign key constraints are now generally available](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fforeign-key-constraints-are-now-generally-available%2Fforeign-key-constraints-ga-blog.jpg&w=3840&q=75)
Foreign key constraints are now generally available
You can now enable foreign key constraints to enforce referential integrity in your PlanetScale database.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Ftaylor-barnett.jpg&w=256&q=75)
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Frick-branson.jpeg&w=256&q=75)
![Amazon Aurora Pricing: The many surprising costs of running an Aurora database](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Famazon-aurora-pricing-the-many-surprising-costs-of-running-an-aurora-database%2Faurora-pricing-blog.jpg&w=3840&q=75)
Amazon Aurora Pricing: The many surprising costs of running an Aurora database
Amazon Aurora is pitched as a straightforward and scalable database service on AWS, but there are associated costs that you might not be aware of.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbrian-morrison.jpeg&w=256&q=75)
![Three common MySQL database design mistakes](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fthree-common-mysql-database-design-mistakes%2Fthree-common-mysql-database-design-mistakes-blog.jpg&w=3840&q=75)
Three common MySQL database design mistakes
Learn about a few common mistakes when designing your MySQL database schema.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbrian-morrison.jpeg&w=256&q=75)
![OAuth applications are now available to everyone](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Foauth-applications-are-now-available%2Foauth-applications-blog.jpg&w=3840&q=75)
OAuth applications are now available to everyone
You can now build integrations that seamlessly authenticate with PlanetScale and allow management access to your users’ organizations and databases from your application.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Ftaylor-barnett.jpg&w=256&q=75)
![Deprecating the Scaler plan](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fdeprecating-scaler-pro%2Fscaler-announcement-blog.jpg&w=3840&q=75)
Deprecating the Scaler plan
Today, in our effort to continue being the best database for serverless and applications that require massive scale, we are deprecating the Scaler plan.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fnick-van-wiggeren.jpeg&w=256&q=75)
![PlanetScale branching vs. Amazon Aurora blue/green deployments](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fplanetscale-branching-vs-amazon-aurora-blue-green-deployments%2Fplanetscale-branching-vs-amazon-aurora-blue-green-deployments-blog.png&w=3840&q=75)
PlanetScale branching vs. Amazon Aurora blue/green deployments
Learn the key differences between Amazon Aurora blue/green deployments and PlanetScale branching.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbrian-morrison.jpeg&w=256&q=75)
![Considerations for building a database disaster recovery plan](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fconsiderations-for-building-a-database-disaster-recovery-plan%2Fdatabase-disaster-recovery-plan-blog.png&w=3840&q=75)
Considerations for building a database disaster recovery plan
Learn different considerations and best practices for quickly and efficiently recovering your database when downtime hits.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbrian-morrison.jpeg&w=256&q=75)
![Working with Geospatial Features in MySQL](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fgeospatial-features-mysql%2Fgeospatial-mysql-blog.jpg&w=3840&q=75)
Working with Geospatial Features in MySQL
In this blog post, we explore how complex data and geographic features can be represented in MySQL.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fsavannah-longoria.jpg&w=256&q=75)
![PlanetScale vs Amazon Aurora replication](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fplanetscale-vs-amazon-aurora-replication%2Fplanetscale-vs-amazon-aurora-replication-blog.jpg&w=3840&q=75)
PlanetScale vs Amazon Aurora replication
Learn about how Amazon Aurora replication works, and how it compares to the traditional MySQL replication strategy used by PlanetScale.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbrian-morrison.jpeg&w=256&q=75)
![Introducing the Vantage and PlanetScale integration](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fintroducing-vantage%2Fvantage-blog.jpg&w=3840&q=75)
Introducing the Vantage and PlanetScale integration
The Vantage + PlanetScale integration is now available.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fmike-coutermarsh.jpeg&w=256&q=75)
![MySQL isolation levels and how they work](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fmysql-isolation-levels-and-how-they-work%2Fmysql-isolation-levels-blog.jpg&w=3840&q=75)
MySQL isolation levels and how they work
Learn about the various isolation levels used by MySQL to allow concurrency in your database.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fbrian-morrison.jpeg&w=256&q=75)
![Introducing the schemadiff command line tool](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fschemadiff-command-line-tool%2Fschemadiff-cli-blog.jpg&w=3840&q=75)
Introducing the schemadiff command line tool
We are releasing schemadiff, an open source command line tool to generate diffs between two MySQL databases.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fshlomi-noach.jpg&w=256&q=75)
![$ pscale ping](/_next/image?url=%2Fassets%2Fblog%2Fcontent%2Fpscale-ping%2Fpscale-ping-blog.jpg&w=3840&q=75)
$ pscale ping
How close am I to PlanetScale? Use our new CLI command, pscale ping, to find out.
![](/_next/image?url=%2Fassets%2Fblog%2Fauthors%2Fmatt-robenolt.png&w=256&q=75)