---
title: MySQL
slug: mysql
url: "https://toolweight.com/tools/mysql"
homepage: "https://www.mysql.com"
categories: sqlite-vs-postgres-vs-mysql
last_verified: 2026-11-06
dataset_version: 0738be72
license: CC-BY-4.0
---

# MySQL

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

- A thread-per-connection relational server whose default InnoDB engine gives clustered primary-key storage and MVCC via undo logs.
- Mature binary-log replication, shipped by Oracle under GPLv2 with a commercial licence for redistribution.
- An LTS plus innovation-release cadence.
- Strengths are operational: online DDL on huge tables and replication run at extreme scale for two decades.

## Identity

|  |  |
| --- | --- |
| Name | MySQL |
| Company | Oracle |
| One-liner | The relational server that ran the early web, now Oracle-stewarded and InnoDB-based. |
| Site | https://www.mysql.com |
| Docs | https://dev.mysql.com/doc/refman/8.4/en/ |
| Repo | https://github.com/mysql/mysql-server |
| Founded | 1995 |
| Open source | Yes |
| Licence | GPL-2.0 or commercial |
| Compared in | 1 |

## Where it is compared

### [Database engines](https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql)
| Field | Value | Confidence | Verified | Source | Note | Permalink |
| --- | --- | --- | --- | --- | --- | --- |
| Embedded or server | Server (client/server) | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/what-is-mysql.html | The libmysqld embedded server library was removed in 8.0; it is a server, full stop. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--embedded_or_server |
| Concurrency model | MVCC (undo log) | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-multi-versioning.html | InnoDB keeps old versions in an undo log rather than the heap, so the failure mode is history-list growth, not table bloat. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--concurrency_model |
| Write concurrency | Concurrent writers (row-level) | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-locking.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--write_concurrency |
| Isolation levels | Read uncommitted, Read committed, Repeatable read, Serializable | Vendor-claimed | 2026-11-06 | https://dev.mysql.com/doc/refman/8.4/en/innodb-transaction-isolation-levels.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--isolation_levels |
| JSON support | Binary JSON type | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/json.html | A real JSON column type stored in a parsed binary format, with multi-valued indexes over arrays since 8.0.17. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--json_support |
| Full-text search | Built-in | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/fulltext-search.html | FULLTEXT indexes on InnoDB with natural-language and boolean modes; the ngram parser covers CJK. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--full_text_search |
| Vector search | Native type | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/9.0/en/vector.html | VECTOR type and distance functions since 9.0, but the approximate index is a HeatWave feature, the community server does exact scans. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--vector_search |
| Type strictness | Static, coercing | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/sql-mode.html | STRICT_TRANS_TABLES is on by default and has been since 5.7, but sql_mode is a runtime variable, so strictness is a configuration fact rather than an engine fact. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--type_strictness |
| ALTER TABLE | Moderate | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl-operations.html | Broad ALTER support with INSTANT and INPLACE algorithms. DDL is atomic and crash-safe since 8.0, but you cannot roll it back inside a transaction the way you can on Postgres. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--alter_table_limits |
| Max database size | 64 TB | Vendor-claimed | 2026-11-06 | https://dev.mysql.com/doc/refman/8.4/en/innodb-limits.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--max_db_size |
| Replication | Built-in async + synchronous | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/replication.html | Asynchronous binary-log replication, a semi-synchronous plugin, and Group Replication for quorum writes and automatic failover. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--replication |
| PITR | ● | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/point-in-time-recovery.html | Full backup plus mysqlbinlog replay to a timestamp or GTID. Percona XtraBackup is the usual hot-backup tool in the open-source world. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--pitr |
| Online schema change | ● | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl.html | Native online DDL, plus gh-ost and pt-online-schema-change for the cases it cannot do. The strongest story on this page. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--online_schema_change |
| Connection model | Thread per connection | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/connection-interfaces.html | A thread per connection, so idle connections are far cheaper than on Postgres. A true thread pool is an Enterprise or Percona feature. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--connection_model |
| Default max conns | 151 | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--default_max_connections |
| Managed options | Amazon RDS, Amazon Aurora, Google Cloud SQL, Azure Database, PlanetScale | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--hosted_options |
| Ops burden | 3 | Inferred | 2026-07-01 | - | A server with users, replicas and a binlog to keep an eye on, but no vacuum, and connection handling that forgives a sloppy pool. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--operational_burden |
| Extension ecosystem | 2 | Inferred | 2026-07-01 | - | A component and plugin API exists, and pluggable storage engines are real, but there is nothing resembling the Postgres extension market. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--extension_ecosystem |
| Client libraries | 5 | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--client_library_maturity |
| Migration tooling | 4 | Inferred | 2026-07-01 | - | Flyway and Liquibase are first-class, and gh-ost plus pt-online-schema-change are battle-tested at a scale nothing on Postgres matches. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--migration_tooling |
| GitHub stars | 11,000 | Community-reported | 2026-07-01 | https://github.com/mysql/mysql-server | Approximate. Oracle publishes source drops to this mirror rather than developing in the open. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--github_stars |
| Positioning | The world's most popular open source database. | Vendor-claimed | 2026-07-01 | https://www.mysql.com/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--positioning |
| Licence | GPL-2.0 or commercial | Vendor-claimed | 2026-11-06 | https://www.mysql.com/about/legal/licensing/oem/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--licence |
| Embed in closed source | ○ | Vendor-claimed | 2026-07-01 | https://www.mysql.com/about/legal/licensing/oem/ | GPLv2 unless you buy the commercial licence, which is precisely the product Oracle sells. The client library carries a FOSS Exception, the server does not. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--embedding_freedom |
| Governance | Single vendor | Vendor-claimed | 2026-07-01 | https://www.mysql.com/about/ | Oracle owns the copyright, the roadmap and the release cadence. MariaDB exists because of this row. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--governance |
| First release | 1995-05-23 | Community-reported | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/history.html | First internal release; the first widely distributed public binaries followed in 1996. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--first_release |

**Verdict.** Underused for its strength, altering an enormous table while writes continue; narrower SQL, but a well-worn operational path.

## Alternatives

- [DuckDB](https://toolweight.com/tools/duckdb), In-process columnar analytics engine, SQLite's shape, a warehouse's execution model.
- [MariaDB](https://toolweight.com/tools/mariadb), GPL-only MySQL fork under a foundation, with Galera clustering and native vectors.
- [PostgreSQL](https://toolweight.com/tools/postgresql), MVCC relational server with the widest SQL surface and a deep extension ecosystem.
- [SQLite](https://toolweight.com/tools/sqlite), Embedded SQL engine that runs inside your process, a file, not a server.

## Logo & brand colours

SVG files: https://toolweight.com/teams/mysql/logo.svg and https://toolweight.com/teams/mysql/mono.svg. JSON: https://toolweight.com/api/v1/brands/mysql.

| Hex | oklch |
| --- | --- |
| #00546b | oklch(41.4% 0.078 224.3) |

## Licence and attribution

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

- Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/)
- Canonical HTML: https://toolweight.com/tools/mysql
- Machine-readable: https://toolweight.com/tools/mysql.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp
- Toolweight takes no affiliate revenue and sells no placements.
