惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
Webroot Blog
Webroot Blog
GbyAI
GbyAI
S
SegmentFault 最新的问题
Cyberwarzone
Cyberwarzone
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 【当耐特】
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta
S
Security Affairs
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
Spread Privacy
Spread Privacy
T
Threatpost
Forbes - Security
Forbes - Security
C
Cisco Blogs
Scott Helme
Scott Helme
Attack and Defense Labs
Attack and Defense Labs
Simon Willison's Weblog
Simon Willison's Weblog
腾讯CDC
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
Last Week in AI
Last Week in AI
Recorded Future
Recorded Future
小众软件
小众软件
V
Vulnerabilities – Threatpost
美团技术团队
人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 司徒正美
C
Cybersecurity and Infrastructure Security Agency CISA
Martin Fowler
Martin Fowler
博客园 - 聂微东

Blog — PlanetScale

Keeping a Postgres queue healthy — PlanetScale Patterns for Postgres Traffic Control — PlanetScale Graceful degradation in Postgres — PlanetScale High memory usage in Postgres is good, actually — PlanetScale Stripe Projects partnership: Provision PlanetScale Postgres and MySQL databases from the Stripe CLI — PlanetScale Enhanced tagging in Postgres Query Insights — PlanetScale Behind the scenes: How Database Traffic Control works — PlanetScale Introducing Database Traffic Control — PlanetScale Scaling Postgres connections with PgBouncer — PlanetScale Drizzle joins PlanetScale — PlanetScale Video Conferencing with Postgres — PlanetScale Faster PlanetScale Postgres connections with Cloudflare Hyperdrive — PlanetScale Introducing the PlanetScale MCP server — PlanetScale Database Transactions — PlanetScale Automating our changelog with Cursor commands — PlanetScale Postgres 18 is now available — PlanetScale Using MotherDuck with PlanetScale — PlanetScale $50 PlanetScale Metal is GA for Postgres — PlanetScale AI-Powered Postgres index suggestions — PlanetScale $5 PlanetScale is live — PlanetScale Announcing Vitess 23 — PlanetScale $50 PlanetScale Metal — PlanetScale Report on our investigation of the 2025-10-20 incident in AWS us-east-1 — PlanetScale $5 PlanetScale — PlanetScale Benchmarking Postgres 17 vs 18 — PlanetScale Larger than RAM Vector Indexes for Relational Databases — PlanetScale Partnering with Cloudflare to bring you the fastest globally distributed applications — PlanetScale Processes and Threads — PlanetScale PlanetScale for Postgres is now GA — PlanetScale Postgres High Availability with CDC — PlanetScale Announcing Neki — PlanetScale Caching — PlanetScale The principles of extreme fault tolerance — PlanetScale Announcing PlanetScale for Postgres — PlanetScale Announcing Vitess 22 — PlanetScale The Real Failure Rate of EBS — PlanetScale IO devices and latency — PlanetScale Announcing PlanetScale Metal — PlanetScale PlanetScale Metal: There’s no replacement for displacement — PlanetScale Upgrading Query Insights to Metal — PlanetScale Automating cherry-picks between OSS and private forks — PlanetScale Database Sharding — PlanetScale Anatomy of a Throttler, part 3 — PlanetScale Introducing sharding on PlanetScale with workflows — PlanetScale Announcing Vitess 21 — PlanetScale Announcing the PlanetScale vectors public beta — PlanetScale Anatomy of a Throttler, part 2 — PlanetScale Instant deploy requests — PlanetScale Anatomy of a Throttler, part 1 — PlanetScale Increase IOPS and throughput with sharding — PlanetScale Tracking index usage with Insights — PlanetScale Faster backups with sharding — PlanetScale Building data pipelines with Vitess — PlanetScale The State of Online Schema Migrations in MySQL — PlanetScale Optimizing aggregation in the Vitess query planner — PlanetScale Dealing with large tables — PlanetScale Announcing Vitess 20 — PlanetScale Self-managed Vitess vs Managed Vitess with PlanetScale — PlanetScale Achieving data consistency with the consistent lookup Vindex — PlanetScale The MySQL adaptive hash index — PlanetScale Introducing global replica credentials — PlanetScale Profiling memory usage in MySQL — PlanetScale Summer 2023: Fuzzing Vitess at PlanetScale — PlanetScale How PlanetScale makes schema changes — PlanetScale Identifying and profiling problematic MySQL queries — PlanetScale The Problem with Using a UUID Primary Key in MySQL — PlanetScale Announcing Vitess 19 — PlanetScale PlanetScale forever — PlanetScale Introducing schema recommendations — PlanetScale Amazon Aurora Pricing: The many surprising costs of running an Aurora database — PlanetScale Three common MySQL database design mistakes — PlanetScale OAuth applications are now available to everyone — PlanetScale Deprecating the Scaler plan — PlanetScale PlanetScale branching vs. Amazon Aurora blue/green deployments — PlanetScale Databases at scale — PlanetScale Considerations for building a database disaster recovery plan — PlanetScale Working with Geospatial Features in MySQL — PlanetScale PlanetScale vs Amazon Aurora replication — PlanetScale Introducing the Vantage and PlanetScale integration — PlanetScale MySQL isolation levels and how they work — PlanetScale Introducing the schemadiff command line tool — PlanetScale $ pscale ping — PlanetScale Announcing foreign key constraints support — PlanetScale The challenges of supporting foreign key constraints — PlanetScale What is HTAP? — PlanetScale Introducing Insights Anomalies — PlanetScale Webhook security: a hands-on guide — PlanetScale Announcing the Fivetran integration — PlanetScale Introducing webhooks — PlanetScale What is MySQL replication and when should you use it? — PlanetScale Sync user data between Clerk and a PlanetScale MySQL database — PlanetScale Introducing database reports — PlanetScale Distributed caching systems and MySQL — PlanetScale What is MySQL partitioning? — PlanetScale MySQL High Availability: Connection handling and concurrency — PlanetScale Personalizing your onboarding with Markdoc — PlanetScale PlanetScale vs. Amazon Aurora — PlanetScale PlanetScale vs. Amazon RDS — PlanetScale PlanetScale is bringing vector search and storage to MySQL — PlanetScale PlanetScale Managed is now PCI compliant — PlanetScale
Benchmarking Postgres — PlanetScale
Ben Dicken · 2025-07-01 · via Blog — PlanetScale

Ben Dicken [@BenjDicken] |

Today we launched PlanetScale for Postgres. For the past several months, we've been laser focused on building the best Postgres experience on the planet, performance included.

To ensure we met our high standard for database performance, we needed a way to measure and compare other options with a standardized, repeatable, and fair methodology. We built an internal tool, "Telescope", to be our go-to tool for creating, running, and assessing benchmarks.

We have used this as an internal tool to give our engineers quick feedback on the evolution of our product's performance as we built and tuned it. We decided to share our findings with the world, and give others the tools to reproduce them.

If you'd like to skip straight to the benchmark results, they are here:

And here is a quick overview of how PlanetScale performs compared to other Postgres vendors:

In every aspect of our business we aim for excellence and continual improvement. We encourage you to reach out at benchmarks@planetscale.com if you see any mistakes in our methodology or cost calculations.

What is benchmarking?

The way benchmarking is used is often deceptive. This applies to all technologies, not just databases.

So let's be clear, benchmarking of any kind has its shortcomings. Every OLTP workload at every organization is unique and no single benchmark can capture the performance characteristics of all such databases. Data size, hot:cold ratios, QPS variability, schema structure, indexes, and 100 other factors determine the requirements of your relational database setup.

You cannot look at a benchmark and know for sure that your workload will perform the same given all other factors are the same.

However, when a benchmark is conducted well, it is quite useful for answering the following questions:

  1. How quickly can I reach my database? (latency)
  2. How does the database perform under a "typical" OLTP load? (TPS, QPS, etc)
  3. How does the database perform under high read / write pressure? (IOPS, caching)
  4. How much does it cost to achieve some bar of performance relative to other options? (price:performance ratio)

These are the types of questions we set out to answer with our benchmarking. Therefore, we chose three benchmarks as our primary measurement tools:

  • Latency: A simple query-path latency benchmark. This repeatedly runs SELECT 1; statements on the database from another instance in the same region. Very simple, but effective to determine basic query-path latency.
  • TPCC: We used a TPCC-like benchmark developed by Percona to help answer questions 2-4. More details will be provided on the configuration later in this post.
  • OLTP Read-only: For a selection of the top-performers, we also run an OLTP Read-only sysbench workload. This is useful for isolating read performance, as most OLTP workloads are 80+% reads.

Fairness

In this process, we compared our product to a long list of other cloud Postgres providers. We wanted the comparisons to be as fair as possible.

Every benchmark we are releasing publicly was compared to PlanetScale running on an i8g M-320. That's 4vCPUs, 32GB RAM, and 937GB of NVMe SSD storage. We chose an instance size and cluster configuration that represents what would be typical for a real production application with at least a moderate amount of usage. For example, a database that can serve several-thousand QPS while maintaining low-latency and high-availability.

At PlanetScale, we give you a primary and two replicas spread across 3 availability zones (AZs) by default. Multi-AZ configurations are critical to have a highly-available database. The replicas can also be used to handle significant read load.

For the other products we compared to, we kept things simple by creating single-instance databases that match or exceeded the vCPUs and RAM of the PlanetScale primary. To match the true capacity and availability of PlanetScale, each would also need to add replicas. We account for this when discussing pricing.

Compute

For each competitor, we either matched or exceeded both the vCPU count and RAM. Amazon Aurora, Google AlloyDB, and CrunchyData support memory-optimized RAM:CPU ratios of 8:1, so we were able to match it exactly.

Supabase, TigerData, and Neon only support 4:1 RAM:CPU ratios. For these, we opted to match the RAM, giving them double the CPU count used by PlanetScale. This is an unfair advantage to them, but as you'll see, PlanetScale still significantly outperforms with less resources.

Storage

All of the products we compared with use network-attached storage for the underlying drives. Of these, some do not allow configuration of the specific IOPS, such as Aurora, Neon, and AlloyDB.

Several do however. For Supabase and TigerData, we gave boosts to the default IOPS settings.

Methodology

In the interest of full transparency, we provide full details for how we conducted our benchmarking. Every benchmark was run under the following conditions:

  • All databases and benchmark machine resources were run from within the same cloud region. For all but the Google products, this meant running in us-east-1. For Google, us-central1.
  • Except for the Latency benchmarks, we do not provide guarantees down to the availability-zone level. Not all platforms allow you to specify which AZ the database node should reside in (nor do they expose this). Thus, it is impractical to make guarantees around this for all providers.
  • All AWS-based benchmarks were run from a c6a.xlarge (4 vCPUs, 8 GB Memory) in us-east-1. All GCP-based benchmarks were run from a e2-standard-4 (4 vCPUs, 16 GB Memory) in us-central1.
  • All Postgres configuration options are left at each platform's defaults. The one exception to this is modifications to connection limits and timeouts, which may be modified to facilitate benchmarking.
  • For the TPCC-like benchmark, the data was generated using the Percona TPCC scripts with TABLES=20 and SCALE=250. This produces a ~500 gigabyte Postgres database. We provide instructions to reproduce these for yourself.
  • The OLTP benchmark uses sysbench's built-in oltp_read_only benchmark. We provide instructions to reproduce these for yourself.
  • The latency benchmark is quite simple: We run SELECT 1; 200 times in a row, and measure the round-trip of the query for each one. You can easily write scripts to measure such latencies.

Additional details are provided in each of the results pages, linked earlier.

An invitation

We have no intention of misrepresenting others. Our aim is to show the world the excellent performance to be gained by running Postgres on PlanetScale Metal. In our testing, Postgres on PlanetScale Metal is by far the most performant.

We invite other vendors to provide feedback. If you see anything wrong in our benchmarking methodology, let us know at benchmarks@planetscale.com.