System Design Space
Knowledge graphSettings

Updated: May 2, 2026 at 9:32 PM

MySQL: history, storage engines, and scaling

medium

MySQL history, its role in the LAMP stack, InnoDB and other storage engines, the DDL/DML request path, replication, MySQL Cluster, Vitess, and operational boundaries.

MySQL matters not only as a classic of the LAMP era. It shows how a mass-market database evolves through storage engines, replication, and platform layers such as Vitess.

In engineering practice, this chapter helps connect InnoDB behavior, clustered indexes, read replicas, and replication lag to a concrete workload profile.

In interviews and design reviews, it helps you speak honestly about the limits: where MySQL fully handles the OLTP problem, and where multi-region scale, heavy analytics, or stricter horizontal growth needs point elsewhere.

Practical value of this chapter

Engine-aware design

Model tables, keys, and transactions with InnoDB and clustered index behavior in mind.

Read scaling strategy

Design read replicas and failover topology with replication lag and read-consistency needs explicitly tracked.

Schema evolution

Plan online migrations and backward-compatible changes to avoid production instability under heavy load.

Interview position

Explain when MySQL is sufficient and when alternatives are needed for multi-region or analytics-heavy workloads.

Source

MySQL

History of MySQL, the LAMP stack, storage engines, replication, and scaling ecosystem.

Перейти на сайт

MySQL is one of the most popular relational DBMSs. It started out as a simple and fast engine, became part of the LAMP stack, and then received transactional capabilities, a flexible storage engines model, and a scaling ecosystem.

History and development milestones

1995

First release of MySQL

MySQL's first release ships on May 23, 1995, and the project quickly gains traction in web applications.

2000

MySQL AB and dual licensing

MySQL AB formalizes a model that combines GPL distribution with commercial licensing for enterprise use.

2003 (4.0)

MySQL 4.0

The platform becomes more mature for mainstream web applications, and MySQL becomes a fixture of the LAMP stack.

2005 (5.0)

MySQL 5.0

Stored procedures, triggers, and views arrive, making MySQL a more capable SQL platform.

2008

Purchase of Sun Microsystems

Sun acquires MySQL AB and gains control of one of the key open-source SQL products.

2009-2010

MariaDB fork and move to Oracle

MariaDB is launched during the Sun/Oracle deal; in 2010, Oracle completes its acquisition of Sun.

2010 (5.5)

InnoDB becomes default

In the MySQL 5.5 branch, the InnoDB engine becomes the default engine, strengthening ACID positioning.

2013 (5.6)

MySQL 5.6

Improved replication and performance capabilities (including GTID and InnoDB performance).

2015 (5.7)

MySQL 5.7

JSON functions, generated columns, and optimizer improvements expand support for mixed workload profiles.

2018 (8.0)

MySQL 8.0

A major update adds CTEs, window functions, a transactional data dictionary, and more kernel modernization.

2024+ (8.4 LTS)

New release model

The LTS line (8.4) appears, and development proceeds through innovation branches and subsequent major releases.

MySQL in a LAMP stack

LAMP is a classic stack for web applications: Linux + Apache + MySQL + PHP/Perl/Python.

L

Linux

Operating system for servers and web hosting.

A

Apache

An HTTP server that serves web requests.

M

MySQL

Relational database for storing and processing data.

P

PHP / Perl / Python

Languages for server logic and application templates.

MySQL architecture by layers

The classic MySQL architecture divides responsibility between the client layer, the SQL layer, storage engines, and the OS/file-system layer.

Clients and connections
MySQL protocolJDBC / ODBCAuth + TLSConnection pool
Layer transition
SQL layer
ParserOptimizerExecutorMetadataPrivileges
Layer transition
Storage engines
InnoDBMyISAMNDBMemory/CSV
Layer transition
OS + hardware
OSFilesystemDiskNetwork
Service subsystems

Additional subsystems work around the core layers and provide reliability, replication, and observability.

Logs

Binary logRedo/Undo (InnoDB)

Observability

Performance SchemaInformation SchemaStatus metrics

Replication

Primary-ReplicaSemi-syncGTID

DDL and DML: how a request flows

DDL changes the schema and metadata, while DML works with data and indexes. Below is a visualization of the key stages for both types of requests.

How a request flows through MySQL

Comparing the execution chain for DDL (schema) and DML (data)

Interactive replayStep 1/5

Active step

1. Parse and optimize

The optimizer builds an execution plan and selects indexes.

Data operations

  • DML works with data and indexes without changing structure.
  • The main pressure is on cache, logs, and row locks.
  • Performance is often improved via indexing and plan selection.
Row-level operationsBinary logTransaction commit

Evolution of storage engines

MySQL supports multiple storage engines, allowing you to choose the right one for different types of tables.

InnoDB (default)

Transactional storage engine with ACID support, foreign keys, Redo/Undo logs, and clustered indexes.

MyISAM (legacy)

A historical storage engine without full transactional guarantees; mostly useful for understanding MySQL's evolution.

NDB Cluster

The storage engine behind MySQL Cluster, designed for distributed storage without shared disks.

The list of built-in engines also includes Memory, Archive, CSV, Federated, Blackhole and others.

Documentation

Vitess: sharding for MySQL

How Vitess splits keyspace into shards and routes requests to MySQL.

Перейти на сайт

Scaling: replication, Cluster, Vitess

Replication

Built-in replication supports asynchronous and semi-synchronous modes for read scaling and failover preparation.

MySQL Cluster (NDB)

A cluster option based on NDB, where data is distributed across nodes without shared storage.

Vitess

A routing and sharding layer that splits keyspace into MySQL shards, each with a primary and replicas.

Architecture option with Vitess: requests go through a routing layer to multiple MySQL shards.

Clients

Applications

Routing

VTGate

MySQL

Shards

Primary + replicas

Related chapters

Enable tracking in Settings