---
title: MySQL vs PostgreSQL vs SQLite
slug: mysql-vs-postgresql-vs-sqlite
url: "https://toolweight.dev/vs/mysql-vs-postgresql-vs-sqlite"
category: sqlite-vs-postgres-vs-mysql
last_verified: 2026-07-01
license: CC-BY-4.0
---

# MySQL vs PostgreSQL vs SQLite

> Compared on the Database engines field registry — 26 fields, all sourced.

## Where they differ

| Field | MySQL | PostgreSQL | SQLite |
| --- | --- | --- | --- |
| Embedded or server | Server (client/server) | Server (client/server) | Embedded (in-process) |
| Concurrency model | MVCC (undo log) | MVCC (heap row versions) | Reader/writer locking |
| Write concurrency | Concurrent writers (row-level) | Concurrent writers (row-level) | Single writer |
| Isolation levels | Read uncommitted, Read committed, Repeatable read, Serializable | Read committed, Repeatable read, Serializable | Serializable |
| JSON support | Binary JSON type | Binary JSONB + indexes | Text functions only |
| Full-text search | Built-in | Built-in | Extension |
| Vector search | Native type | Extension | Extension |
| Type strictness | Static, coercing | Static, strict | Dynamic (per-value) |
| ALTER TABLE | Moderate | Minimal | Severe (rebuild required) |
| Max database size | 64 TB | — | 256 TB |
| Replication | Built-in async + synchronous | Built-in async + synchronous | Third-party only |
| PITR | ● | ● | ◐ |
| Online schema change | ● | ◐ | ○ |
| Connection model | Thread per connection | Process per connection | In-process (no connections) |
| Default max conns | 151 | 100 | — |
| Managed options | Amazon RDS, Amazon Aurora, Google Cloud SQL, Azure Database, PlanetScale | Neon, Supabase, Amazon RDS, Amazon Aurora, Google Cloud SQL, Azure Database, PlanetScale | Turso, Cloudflare D1, Fly.io LiteFS |
| Ops burden | 3 | 4 | 1 |
| Extension ecosystem | 2 | 5 | 4 |
| Migration tooling | 4 | 5 | 3 |
| GitHub stars | 11,000 | 18,000 | 8,000 |
| Positioning | The world's most popular open source database. | The world's most advanced open source relational database. | Small. Fast. Reliable. Choose any three. |
| Licence | GPL-2.0 or commercial | PostgreSQL Licence (BSD-style) | Public domain |
| Embed in closed source | ○ | ● | ● |
| Governance | Single vendor | Community project | Independent team |
| First release | 1995-05-23 | 1997-01-29 | 2000-08-17 |

## Every field

| Field | MySQL | PostgreSQL | SQLite |
| --- | --- | --- | --- |
| Embedded or server | Server (client/server) | Server (client/server) | Embedded (in-process) |
| Concurrency model | MVCC (undo log) | MVCC (heap row versions) | Reader/writer locking |
| Write concurrency | Concurrent writers (row-level) | Concurrent writers (row-level) | Single writer |
| Isolation levels | Read uncommitted, Read committed, Repeatable read, Serializable | Read committed, Repeatable read, Serializable | Serializable |
| JSON support | Binary JSON type | Binary JSONB + indexes | Text functions only |
| Full-text search | Built-in | Built-in | Extension |
| Vector search | Native type | Extension | Extension |
| Type strictness | Static, coercing | Static, strict | Dynamic (per-value) |
| ALTER TABLE | Moderate | Minimal | Severe (rebuild required) |
| Max database size | 64 TB | — | 256 TB |
| Replication | Built-in async + synchronous | Built-in async + synchronous | Third-party only |
| PITR | ● | ● | ◐ |
| Online schema change | ● | ◐ | ○ |
| Connection model | Thread per connection | Process per connection | In-process (no connections) |
| Default max conns | 151 | 100 | — |
| Managed options | Amazon RDS, Amazon Aurora, Google Cloud SQL, Azure Database, PlanetScale | Neon, Supabase, Amazon RDS, Amazon Aurora, Google Cloud SQL, Azure Database, PlanetScale | Turso, Cloudflare D1, Fly.io LiteFS |
| Ops burden | 3 | 4 | 1 |
| Extension ecosystem | 2 | 5 | 4 |
| Client libraries | 5 | 5 | 5 |
| Migration tooling | 4 | 5 | 3 |
| GitHub stars | 11,000 | 18,000 | 8,000 |
| Positioning | The world's most popular open source database. | The world's most advanced open source relational database. | Small. Fast. Reliable. Choose any three. |
| Licence | GPL-2.0 or commercial | PostgreSQL Licence (BSD-style) | Public domain |
| Embed in closed source | ○ | ● | ● |
| Governance | Single vendor | Community project | Independent team |
| First release | 1995-05-23 | 1997-01-29 | 2000-08-17 |

## Each option

### MySQL
The relational server that ran the early web, now Oracle-stewarded and InnoDB-based.

Chosen far less often than it should be for the one thing it is genuinely best at: changing the schema of an enormous table while writes continue. The SQL surface is narrower than Postgres and the extension story is thin, but the operational path is extremely well worn.
- Very large tables that must be altered without downtime
- Read-replica topologies your team has already run before
- Environments where the host, ORM or ops runbook already assumes MySQL

### PostgreSQL
MVCC relational server with the widest SQL surface and a deep extension ecosystem.

The strongest engine here on every axis except the one that costs you time. Nothing else combines transactional DDL, this much SQL and pgvector in the same box — and nothing else here needs you to understand autovacuum, bloat and connection pooling before the first incident.
- Concurrent writers plus queries that outgrow simple key lookups
- Anything storing embeddings, geometry or time series alongside rows
- Teams who will run it managed, or who have someone who wants to own it

### SQLite
Embedded SQL engine that runs inside your process — a file, not a server.

The best answer for any workload where one process owns the data, and the answer most teams reject for reasons that stopped being true a decade ago. The real constraints are the single writer, the absent replication story and the table rebuild you need for most schema changes — none of which is throughput.
- One application process, or one machine, owning the data
- Read-heavy workloads where removing the network hop is the whole win
- Anything shipped to the edge, a device, a CLI or a test suite

## Sources

| Tool | Field | Confidence | Verified | Source |
| --- | --- | --- | --- | --- |
| MySQL | Embedded or server | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/what-is-mysql.html |
| MySQL | Concurrency model | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-multi-versioning.html |
| MySQL | Write concurrency | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-locking.html |
| MySQL | Isolation levels | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-transaction-isolation-levels.html |
| MySQL | JSON support | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/json.html |
| MySQL | Full-text search | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/fulltext-search.html |
| MySQL | Vector search | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/9.0/en/vector.html |
| MySQL | Type strictness | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/sql-mode.html |
| MySQL | ALTER TABLE | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl-operations.html |
| MySQL | Max database size | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-limits.html |
| MySQL | Replication | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/replication.html |
| MySQL | PITR | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/point-in-time-recovery.html |
| MySQL | Online schema change | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl.html |
| MySQL | Connection model | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/connection-interfaces.html |
| MySQL | Default max conns | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html |
| MySQL | GitHub stars | Community-reported | 2026-07-01 | https://github.com/mysql/mysql-server |
| MySQL | Positioning | Vendor-claimed | 2026-07-01 | https://www.mysql.com/ |
| MySQL | Licence | Vendor-claimed | 2026-07-01 | https://www.mysql.com/about/legal/licensing/oem/ |
| MySQL | Embed in closed source | Vendor-claimed | 2026-07-01 | https://www.mysql.com/about/legal/licensing/oem/ |
| MySQL | Governance | Vendor-claimed | 2026-07-01 | https://www.mysql.com/about/ |
| MySQL | First release | Community-reported | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/history.html |
| PostgreSQL | Embedded or server | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/tutorial-arch.html |
| PostgreSQL | Concurrency model | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/mvcc-intro.html |
| PostgreSQL | Write concurrency | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/explicit-locking.html |
| PostgreSQL | Isolation levels | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/transaction-iso.html |
| PostgreSQL | JSON support | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/datatype-json.html |
| PostgreSQL | Full-text search | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/textsearch.html |
| PostgreSQL | Vector search | Vendor-claimed | 2026-07-01 | https://github.com/pgvector/pgvector |
| PostgreSQL | Type strictness | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/typeconv.html |
| PostgreSQL | ALTER TABLE | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/sql-altertable.html |
| PostgreSQL | Max database size | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/limits.html |
| PostgreSQL | Replication | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/high-availability.html |
| PostgreSQL | PITR | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/continuous-archiving.html |
| PostgreSQL | Connection model | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/tutorial-arch.html |
| PostgreSQL | Default max conns | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/runtime-config-connection.html |
| PostgreSQL | Extension ecosystem | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/extend-extensions.html |
| PostgreSQL | GitHub stars | Community-reported | 2026-07-01 | https://github.com/postgres/postgres |
| PostgreSQL | Positioning | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/ |
| PostgreSQL | Licence | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/about/licence/ |
| PostgreSQL | Embed in closed source | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/about/licence/ |
| PostgreSQL | Governance | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/developer/ |
| PostgreSQL | First release | Community-reported | 2026-07-01 | https://www.postgresql.org/docs/current/history.html |
| SQLite | Embedded or server | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/about.html |
| SQLite | Concurrency model | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/lockingv3.html |
| SQLite | Write concurrency | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/wal.html |
| SQLite | Isolation levels | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/isolation.html |
| SQLite | JSON support | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/json1.html |
| SQLite | Full-text search | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/fts5.html |
| SQLite | Vector search | Community-reported | 2026-07-01 | https://github.com/asg017/sqlite-vec |
| SQLite | Type strictness | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/datatype3.html |
| SQLite | ALTER TABLE | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/lang_altertable.html |
| SQLite | Max database size | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/limits.html |
| SQLite | Replication | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/whentouse.html |
| SQLite | PITR | Community-reported | 2026-07-01 | https://litestream.io/how-it-works/ |
| SQLite | Online schema change | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/lang_altertable.html |
| SQLite | Connection model | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/threadsafe.html |
| SQLite | Default max conns | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/whentouse.html |
| SQLite | GitHub stars | Community-reported | 2026-07-01 | https://github.com/sqlite/sqlite |
| SQLite | Positioning | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/ |
| SQLite | Licence | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/copyright.html |
| SQLite | Embed in closed source | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/copyright.html |
| SQLite | Governance | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/consortium.html |
| SQLite | First release | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/chronology.html |

See the full roster: [Database engines](https://toolweight.dev/compare/sqlite-vs-postgres-vs-mysql) — 5 tools.

## Licence and attribution

Data from toolweight (https://toolweight.dev), licensed CC-BY-4.0.

- Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/)
- Canonical HTML: https://toolweight.dev/vs/mysql-vs-postgresql-vs-sqlite
- Machine-readable: https://toolweight.dev/vs/mysql-vs-postgresql-vs-sqlite.md · https://toolweight.dev/api/v1 · https://toolweight.dev/mcp
- toolweight takes no affiliate revenue and sells no placements. Corrections: https://toolweight.dev/suggest
