PostgreSQL vs MySQL: какую базу данных выбрать
PostgreSQL и MySQL — две самые популярные реляционные базы данных с открытым исходным кодом. Обе бесплатны, обе зрелые, обе справляются с большинством задач. Но различия есть — и для конкретного проекта они могут быть критичны.
Коротко: наш вердикт
PostgreSQL — выбор по умолчанию для новых проектов: мощнее, JSONB, PostGIS, строже к данным. MySQL — если используете WordPress/Magento, или у команды глубокая экспертиза в MySQL. Для типичного веб-приложения (API + фронтенд) — PostgreSQL однозначно.
В March Code мы используем PostgreSQL на 95% проектов. Подробнее о разработке.
PostgreSQL
Плюсы
- + Мощнее: CTE, оконные функции, материализованные views
- + JSON/JSONB — документная БД внутри реляционной
- + PostGIS — геоданные и карты из коробки
- + Строгая типизация и проверка данных
- + Extensible: пользовательские типы, функции, операторы
Минусы
- - Чуть медленнее на простых SELECT-ах
- - Сложнее настройка репликации (vs MySQL Group Replication)
- - Потребляет больше памяти
- - Меньше shared-хостингов с PostgreSQL
Подходит для: Сложные запросы, аналитика, геоданные, JSON внутри реляционной базы. Нужны строгая типизация и продвинутые возможности — по умолчанию берите его.
MySQL
Плюсы
- + Быстрее на простых запросах (чтение)
- + Простая настройка репликации
- + WordPress, Drupal, Magento — требуют MySQL
- + Доступен на любом хостинге
- + MySQL 8 подтянулся по функциональности
Минусы
- - Слабее в сложных запросах (CTE, оконные функции)
- - JSON-поддержка хуже, чем JSONB в PostgreSQL
- - Нет PostGIS (геоданные)
- - Исторические проблемы с целостностью данных (MyISAM)
Подходит для: Простые CRUD-нагрузки, много чтения, типовой стек с WordPress или готовой CMS. Хостинг дешевле и специалистов чуть больше.
Сравнение по критериям
| Критерий | PostgreSQL | MySQL |
|---|---|---|
| Сложные SQL-запросы | Превосходно (CTE, window functions) | Хорошо (MySQL 8 добавил поддержку) |
| JSON-данные | JSONB — индексируемый, быстрый | JSON — медленнее, ограниченнее |
| Геоданные | PostGIS — стандарт индустрии | Spatial Extensions (базовые) |
| Простые SELECT-ы | Быстро | Чуть быстрее |
| Репликация | Streaming + Logical | Group Replication (проще) |
| Облачные сервисы | AWS RDS, YC Managed PostgreSQL | AWS RDS, YC Managed MySQL |
| ORM-поддержка | Prisma, TypeORM, SQLAlchemy, Django ORM | Prisma, TypeORM, SQLAlchemy, Django ORM |
| Лицензия | PostgreSQL License (свободная) | GPL (Oracle) |
Что выбрать под вашу задачу
Выбирайте PostgreSQL, если
Сложные запросы, аналитика, геоданные, JSON внутри реляционной базы. Нужны строгая типизация и продвинутые возможности — по умолчанию берите его.
Выбирайте MySQL, если
Простые CRUD-нагрузки, много чтения, типовой стек с WordPress или готовой CMS. Хостинг дешевле и специалистов чуть больше.
Частые вопросы
Можно мигрировать с MySQL на PostgreSQL?
Да, но это нетривиальная задача: различия в типах данных, синтаксисе SQL, хранимых процедурах. Инструменты миграции (pgloader, AWS DMS) автоматизируют 80% работы, но ручная проверка обязательна. Типичный срок: 1-4 недели в зависимости от сложности. Стоимость: от 100К руб.
PostgreSQL или MongoDB?
PostgreSQL с JSONB покрывает 90% сценариев, для которых раньше выбирали MongoDB. Если данные преимущественно реляционные (пользователи, заказы, товары) — PostgreSQL. Если 100% документная модель и горизонтальное шардирование критично — MongoDB. Для большинства проектов: PostgreSQL — безопаснее и универсальнее.
Какую базу выбрать для стартапа?
PostgreSQL. Бесплатный, мощный, масштабируется, поддерживается всеми ORM и облачными провайдерами. Instagram вырос до миллиарда пользователей на PostgreSQL. Для стартапа этого более чем достаточно. Менять БД — дорого, поэтому лучше сразу выбрать правильную.
Продолжите изучение

