Key takeaways
- There is no single fastest SQL engine, because speed depends on the workload, the schema, the indexes, the hardware and the tuning.
- Postgres leads the 2026 Stack Overflow survey of databases at 57.9%, which reflects trust, tooling and hiring, not a speed record.
- Its real strengths are MVCC concurrency, a capable query planner, parallel query, several index types, extensions, JSONB and pgvector.
- Its real weak spots are the process-per-connection model that calls for a connection pooler, vacuum and table bloat, and write amplification on update-heavy tables.
- Choose Postgres as the default for new business applications, and choose another engine only for a named reason such as an existing SQL Server or Oracle estate.
Engineers say Postgres is the default database so often that leaders start to treat it as settled. A common version of the claim goes further: Postgres is simply faster than the other major SQL engines. That version is not true, and building a decision on it would be a mistake. The true story is more useful, because it tells you what you gain by choosing Postgres and what you take on.
Is Postgres faster than MySQL, SQL Server and Oracle?
No single SQL engine is fastest. Speed depends on the workload, the design of the tables and indexes, the hardware and the tuning, and each of the major engines can win on a specific job. Postgres is fast enough for most business applications and has strengths that matter more than raw speed.
Published benchmarks do not settle it either. The TPC benchmarks each simulate a defined workload, such as TPC-C's order-entry environment, and a result applies to that workload on that configuration. The PostgreSQL project's own benchmarking tool carries a warning in its documentation: "It is very easy to use pgbench to produce completely meaningless numbers." It adds that results are sensitive to how long it has been since tables were initialized, and that autovacuum can change measured performance unpredictably.
| What decides speed | Why it can beat the choice of engine |
|---|---|
| Schema and indexes | A missing index can make the same query dramatically slower on any engine |
| Query shape | Reporting scans, many small lookups and bulk updates favor different designs |
| Workload mix | Read-heavy, write-heavy and analytical loads stress different parts of an engine |
| Hardware and settings | Memory, storage speed and configuration change results more than most engine differences |
| Version | Each major release changes performance, including Postgres itself |
The honest claim is narrower: Postgres is a strong, well-rounded engine for transactional business applications, and it is a safe default. Where a workload is unusual, or a company already runs SQL Server or Oracle with deep in-house skill, another engine can be the better call. Uber's 2016 move away from Postgres, covered below, is the best-known published example.
Where did Postgres come from?
Postgres began as a research project. The PostgreSQL history page says implementation of POSTGRES began in 1986 at the University of California, Berkeley, led by Professor Michael Stonebraker and sponsored by agencies including DARPA and the National Science Foundation. It reports a first demo system in 1987, Version 1 released to a few external users in June 1989, Version 2 in June 1990 and Version 3 in 1991. The Berkeley project officially ended with Version 4.2.
In 1994, Andrew Yu and Jolly Chen added an SQL language interpreter, and the result was released to the web as Postgres95. By 1996 the project concluded that the name would not last, chose PostgreSQL, and set version numbering to start at 6.0 to continue the Berkeley sequence. The project's own site now cites nearly 40 years of active development on the core platform and says PostgreSQL has been ACID-compliant since 2001, meaning groups of changes commit together or not at all.
That history explains the culture. The code has had decades of public development, which is part of why teams trust it with records they cannot afford to lose.
Why is Postgres so popular?
Popularity is the best evidence for the "default" claim. In the 2026 Stack Overflow Developer Survey, PostgreSQL ranked first among databases at 57.9% of respondents (6,984 responses), ahead of SQLite at 42.1%, MySQL at 35.1% and Microsoft SQL Server at 27.1%. Oracle was at 9.4%.
That number measures developer use, not speed. It shows that tooling, hosting options, training material and hiring pools are deepest for Postgres. For a 20 to 200 person company that is a practical advantage: the people you can hire, the cloud services you can buy and the vendors you work with all know it.
What actually makes Postgres strong?
Several design choices explain the reputation. Each one comes with a plain-language meaning for a business.
| Strength | What it means for you |
|---|---|
| MVCC concurrency | Reports do not block orders, and orders do not block reports |
| Cost-based query planner | The database picks an efficient route for each query on its own |
| Parallel query | Large reads can use several processor cores |
| Multiple index types | Different kinds of data and questions get the right kind of index |
| Extensions | New capabilities are added without leaving the database |
| JSONB | Flexible documents live beside structured tables |
| pgvector | AI similarity search runs in the database you already have |
MVCC (multiversion concurrency control) gives each SQL statement a snapshot of the data. The PostgreSQL documentation says locks acquired for reading do not conflict with locks acquired for writing, so reading never blocks writing and writing never blocks reading.
The query planner examines the possible ways to run a query and, per the planner documentation, selects the plan expected to run fastest. For queries with many joins it switches to a genetic query optimizer above a configurable threshold.
Parallel query lets one query use multiple CPUs. The documentation says many queries can run more than twice as fast and some four times faster. The biggest gains go to queries that touch a lot of data but return few rows. It also cautions that many queries cannot benefit.
Postgres offers several index types. The index documentation lists B-tree for equality and range queries, GIN for values with multiple components such as arrays, GiST as a framework for many indexing strategies, and BRIN, which stores summaries about consecutive block ranges of a table. Choosing the right index type is often where large speedups come from.
Extensions add data types, functions, operators and index methods. Two matter most for new projects. The jsonb type, which the PostgreSQL 18 documentation says most applications should prefer for JSON data, supports indexing. And the pgvector extension adds vector similarity search, which AI document search relies on. Our guide to the types of databases shows how far these can replace separate systems.
What is new in recent PostgreSQL releases?
PostgreSQL 18 was released on September 25, 2025. Its release notes list an asynchronous I/O subsystem that can improve performance of sequential scans, bitmap heap scans, vacuums and other operations, plus skip scan lookups that let multicolumn B-tree indexes serve more queries. They also describe faster hash joins and GROUP BY, better locking performance for queries that touch many relations, and a pg_upgrade that now retains optimizer statistics.
The versioning page lists 18 as the latest generally available major version as of October 2026, and 18.6 as the current minor release. It also announces PostgreSQL 19 release candidate 1 on October 15, 2026. The draft version 19 release notes mention a new REPACK command, parallel autovacuum of table indexes and a change to disable JIT compilation by default. Treat those as drafts until the final release.
Release notes show steady engineering work. They do not show that Postgres beats a rival engine on your workload. Only a test with your data does.
What are the real weak spots of Postgres?
Three weaknesses come up repeatedly, and a buyer should know all three.
Connections need a pooler
Postgres uses a process-per-connection model. The documentation says every client process connects to exactly one backend process, and a supervisor spawns a new backend each time a connection is requested. The default max_connections is typically 100. Applications with many instances or short-lived workers can exhaust connections quickly. The usual fix is a connection pooler such as PgBouncer, a lightweight connection pooler for PostgreSQL that sits between the application and the database. Plan for one early if you run serverless or autoscaling services.
Vacuum and bloat need attention
Because of MVCC, an UPDATE or DELETE does not immediately remove the old row version. The routine vacuuming documentation explains that VACUUM reclaims that space for reuse, and that standard vacuum does not return space to the operating system except when pages at the end of a table become entirely free. The same page describes transaction ID wraparound, where a cluster running past about 4 billion transactions without vacuuming could suffer catastrophic data loss. Autovacuum handles this by default, and large, busy tables are where it can fall behind. Notion's October 2021 engineering post says the Postgres VACUUM process began to stall consistently, and called transaction ID wraparound an existential risk. That was a reason it sharded its database.
Updates can amplify writes
In 2016, Uber Engineering explained why it moved from Postgres to MySQL. The post says updating a field in Postgres means every index on the table gets a new entry, even indexes on unchanged fields, and that the physical replication stream became very verbose. It also cited difficulty upgrading between releases and poor support for large connection counts. Postgres skips the index work for heap-only tuple (HOT) updates, when no indexed column changes and the new row version fits on the same page, so the cost falls on tables whose indexed columns change often. The analysis was based on the Postgres 9.2 series, so it describes that era and that workload, not today's versions. It remains a useful reminder that update-heavy tables with many indexes behave differently across engines.
When might another engine be the better choice?
Choose another engine for a reason you can name:
- You already run SQL Server or Oracle with mature tooling, licensed support and staff who know it, and the application depends on its specific features.
- A vendor product requires it. Many packaged ERP and industry systems certify a particular database.
- Your workload matches another engine's design, as Uber's did, and a proof of concept shows a measurable difference.
- Your team has deep MySQL skill and the application is a conventional web workload.
Illustrative example: A 120-person manufacturer is building a supplier portal. One proposal says "use Postgres because it is the fastest." The right response is to ask what the portal does. It stores purchase orders, supplier records and approvals, which are moderate-volume transactional data, and the company's IT team already runs managed Postgres on AWS. Postgres fits for those reasons. The same company's core ERP runs on SQL Server, which the vendor certifies, so it stays there. Two engines coexist, and each choice has a stated reason that has nothing to do with a speed claim.
How Kastling approaches database decisions
Database choice sits within AI & Cloud Infrastructure: cloud architecture and deployment on AWS or Azure, AI application deployment, and the data connections and pipelines behind them. Kastling would start from the workload and the systems already in place, then recommend an engine with the reasons stated, and test critical queries on realistic data before committing. Moving an existing database would begin with a scoped assessment of what depends on it, and success measures would be agreed first. For the wider decision, see our guide to SQL vs NoSQL.
Questions
Is Postgres free to use in a business?
The PostgreSQL project describes the database as free and open source. The costs are in running it: hosting, backups, monitoring, upgrades and people. A managed service on AWS or Azure moves much of that work to the provider for a fee. Compare the total cost of operating each option, not only the license.
Is Postgres the same as PostgreSQL?
Yes. PostgreSQL is the official name, chosen in 1996, and Postgres is the common short form. The name Postgres95 was used briefly between the Berkeley project and the 1996 rename, and is no longer used.
How often does Postgres release new versions, and how long are they supported?
The project releases a new major version about once a year and supports each one for 5 years after its first release. As of October 2026, PostgreSQL 18 is the latest generally available major version, and 14 reaches its final release on November 12, 2026. Check the project versioning page before planning upgrades.
Should we move an existing SQL Server or Oracle system to Postgres?
Not automatically. A migration touches stored procedures, reports, integrations and licensing, and it carries real risk. Move when there is a clear reason such as cost, cloud strategy or a platform change, and run a scoped assessment first.
Sources
- PostgreSQL documentation: A Brief History of PostgreSQL
- PostgreSQL: About
- Stack Overflow Developer Survey 2026: Technology
- PostgreSQL documentation: pgbench
- TPC: Benchmarks
- PostgreSQL 18 documentation: Concurrency control, introduction
- PostgreSQL 18 documentation: Planner/Optimizer
- PostgreSQL 18 documentation: Parallel query
- PostgreSQL 18 documentation: Index types
- PostgreSQL 18 documentation: JSON types
- pgvector: Open-source vector similarity search for Postgres
- PostgreSQL: Release 18.0 notes
- PostgreSQL: Versioning policy
- PostgreSQL development documentation: Release 19 notes (RC 1)
- PostgreSQL 18 documentation: How connections are established
- PostgreSQL 18 documentation: Connection settings
- PgBouncer
- PostgreSQL 18 documentation: Routine vacuuming
- Uber Engineering: Why Uber Engineering switched from Postgres to MySQL
- PostgreSQL 18 documentation: Heap-only tuples (HOT)
- Notion: Herding elephants, sharding Postgres at Notion