MySQL

Тема дорожной карты · Backend разработчик

MySQL — наиболее широко развёртываемая open-source система управления реляционными базами данных в мире, обеспечивающая работу бесчисленных веб-приложений от небольших стартапов до крупных платформ и являющаяся буквой «M» в классических стеках LAMP и LEMP. MySQL хранит данные в таблицах со строго типизированной схемой, поддерживает полные ACID-транзакции через движок InnoDB (BEGIN, COMMIT, ROLLBACK) и предлагает богатый диалект SQL, включая объединения, подзапросы, хранимые процедуры, триггеры и оконные функции, представленные в MySQL 8.0. Типичные операции MySQL: CREATE TABLE orders (id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, total DECIMAL(10,2));, далее операторы INSERT INTO, SELECT ... JOIN и UPDATE; в продакшене используются пулеры соединений ProxySQL или пулы на уровне приложения (HikariCP в Java, mysql2/pool в Node.js) для управления тысячами параллельных соединений. Репликация MySQL — primary/replica с потоковой передачей бинарного лога (binlog) — обеспечивает масштабирование чтения и переключение при сбое с практически нулевым простоем, тогда как MySQL 8.0 InnoDB Cluster и Group Replication обеспечивают автоматическую высокую доступность с несколькими primary. MySQL интегрируется со всеми основными бэкенд-фреймворками: Sequelize и Prisma в Node.js, SQLAlchemy в Python, Doctrine в PHP и spring-data-jpa в Spring Boot — все они генерируют типобезопасные запросы и управляют миграциями баз данных совместно с инструментами Flyway или Liquibase.

Как это работает

MySQL используют ACID-транзакции, декларативный SQL, реляционную схему. PostgreSQL — современный дефолт для новых проектов (богатая типизация, JSON-поддержка, расширения, MVCC); MySQL/MariaDB всё ещё распространён (legacy + WordPress); SQLite — для маленьких single-host (удивительно мощный); CockroachDB / YugabyteDB — для распределённого SQL. Стратегия индексов, план запроса (EXPLAIN), connection pooling — операционные основы. Миграции через Alembic, Flyway, Liquibase или фреймворк-специфичные тулы.

Когда применять

Postgres по умолчанию для любого нового проекта — широкий feature set, зрелая эксплуатация, JSON и full-text встроены. MySQL — только если команда или хостинг уже на нём. SQLite — для embedded или первых 10к юзеров (буквально — масштабируется дальше, чем думают). Distributed SQL (Cockroach, Yugabyte, TiDB) — только когда переросли primary-replica Postgres; эта точка гораздо дальше, чем продают вендоры.

Типичные ошибки

Ловушки MySQL: пропущенные индексы на колонках в WHERE / JOIN (один медленный запрос валит БД); N+1 паттерны от ORM (eager-load явно); долгие транзакции держат локи (делите на меньшие записи); не анализируете план запросов перед деплоем (EXPLAIN ANALYZE); pool соединений мал или велик (начните с max_connections / replica_count, тюньте по наблюдениям).

Связанные понятия

Полезные ресурсы