MySQL — реляционная СУБД с открытым исходным кодом под лицензией GPL и коммерческой лицензией Oracle. Хранит данные в таблицах, связанных внешними ключами; язык запросов — SQL. Самая распространённая СУБД в веб-разработке: предустановлена на большинстве PHP-хостингов, является основой стека LAMP (Linux + Apache + MySQL + PHP).
Архитектура и движки хранения
MySQL использует плагинную архитектуру хранилищ (Storage Engines). Основные движки:
- InnoDB — дефолтный с MySQL 5.5 (2010). ACID-транзакции, внешние ключи, row-level locking, MVCC. Оптимален для OLTP. Буферный пул (
innodb_buffer_pool_size) должен составлять 70–80% RAM сервера. - MyISAM — устаревший, без транзакций, table-level locking. Быстрее для read-heavy нагрузок без конкуренции. С MySQL 8.0 не рекомендуется к использованию.
- Memory — данные только в RAM, для временных таблиц и кэша в запросах.
- Federated — обращение к удалённым MySQL-серверам как к локальным таблицам.
История
MySQL создан Михаэлем Видениусом («Monty Widenius») и Давидом Акселем в 1994–1995 годах в Швеции. Первый публичный релиз — май 1995 года. MySQL 4.0 (2002) — поддержка UNION. MySQL 5.0 (2005) — хранимые процедуры, триггеры, views. В 2008 году MySQL AB куплена Sun Microsystems за $1 млрд; в 2010-м Oracle купила Sun. Опасаясь корпоративных изменений, Видениус в 2009 году создал форк MariaDB. MySQL 8.0 (2018) добавил оконные функции, CTE, атомарные DDL, ролевую модель, удалил устаревший Query Cache. MySQL 8.4 (LTS, 2024) — текущий стабильный релиз.
MySQL vs MariaDB vs PostgreSQL
| Параметр | MySQL 8.4 | MariaDB 11 | PostgreSQL 16 |
|---|---|---|---|
| Лицензия | GPL + коммерческая Oracle | GPL (полностью open) | PostgreSQL (MIT-like) |
| JSON поддержка | Да | Да (JSON_TABLE) | JSONB (бинарный, быстрее) |
| Параллельные запросы | Ограниченно | Ограниченно | Полная поддержка |
| Репликация | Binlog, GTID, Group Replication | Galera Cluster нативно | Streaming, Logical |
| Типичное применение | WordPress, LAMP | Drop-in замена MySQL | Аналитика, геоданные, сложные запросы |
Настройка производительности
Ключевые параметры my.cnf: innodb_buffer_pool_size = 70% RAM (например, 14 ГБ при 20 ГБ RAM); max_connections — по умолчанию 151, при использовании connection pooler снизить до 50–100; query_cache_size = 0 (удалён в 8.0); innodb_io_capacity = 2000 для SSD; innodb_flush_log_at_trx_commit = 2 для баланса скорости и надёжности.
На что обращать внимание
MySQL предустановлен на большинстве хостингов с cPanel, ISPmanager, DirectAdmin. Управление через phpMyAdmin или CLI mysql -u root -p. Для бэкапа — mysqldump или Percona XtraBackup (для горячего бэкапа без остановки сервера). При миграции на новый сервер проверяй совместимость charset: utf8mb4 должен быть везде — в БД, таблицах, подключении и my.cnf.