PostgreSQL и MySQL являются самыми популярными Open Source реляционными базами данных. И часто возникает вопрос - чем отличается PostgreSQL от MySQL? Ответ на этот вопрос позволит понять, какая из баз данных лучше подойдет вашему проекту.
В данной статье мы сравним PostgreSQL и MySQL по различным параметрам и запишем их в сравнительную таблицу.
PostgreSQL vs MySQL
PostgreSQL | MySQL | Вывод | |
Лицензия | Собственная Open Source лицензия, аналогичная MIT и BSD лицензии | Open Source GPL При этом сам MySQL принадлежит Oracle, что теоретически может привести к изменению лицензии в будущем и влиять на стратегию развития MySQL | Обе СУБД распространяются по либеральной Open Source лицензии. При этом PostgreSQL контролируется сообществом, а MySQL - компанией Oracle |
Популярность в мире | №4 среди всех СУБД в мире согласно рейтингу dbengines | №2 среди всех СУБД в мире согласно рейтингу dbengines | Обе СУБД занимают лидирующие строчки в мировых рейтингах, при этом MySQL на текущий момент распространен более широко, чем PostgreSQL |
Тренд | Восходящий. Популярность PostgreSQL возрастает согласно рейтингу dbengines. | Нисходящий. Популярность MySQL незначительно падает согласно рейтингу dbengines | График запросов показывает рост популярности postgresql при падении популярности MySQL. При этом MySQL по прежнему более популярна. Данные подтверждаются и различными международными рейтингами. |
Модель подключения | PostgreSQL использует процесс для каждого соединения, где каждое соединение порождает новый процесс. | MySQL использует поток для каждого соединения, где каждое соединение порождает новый поток. | На практике это приводит к тому, что PostgreSQL обеспечивает лучшую изоляцию, но при большем потреблении ресурса. Для PostgreSQL рекомендуется проксировать соединение через пул соединений, такой как PgBouncer или pgcat. |
Производительность | PostgreSQL обладает хорошей производительностью при умеренных нагрузках | MySQL обладает хорошей производительностью при умеренных нагрузках и чуть большей производительностью в сравнении с PostgreSQL при высоких нагрузках | PostgreSQL и MySQL обладают сравнимой производительностью при умеренных нагрузках, при этом для высоких нагрузок лучше подойдет MySQL |
Функции | PostgreSQL поддерживает пяти-уровневую архитектуру Instance (also called cluster) Database Schema Table Column Присутствует поддержка AСID-транзакций Поддержка RBAC (безопасность) Наличие оптимизатора запросов (лучший, чем у MySQL) Физическая репликация с использованием WAL. И логическая репликация в режиме публикации/подписки. | MySQL поддерживает четырех-уровневую иерархию Instance Database Table Column Присутствует поддержка ACID-транзакций Оптимизация запросов есть, но она уступает PostgreSQL Поддержка RBAC (безопасность) Логическая репликация с использованием binlog | Функционал PostgreSQL и MySQL схож, но у PostgreSQL он несколько шире. |
Расширяемость | PostgreSQL поддерживает различные расширения, позволяющие использовать его не только как простую реляционную базу, но и как другие типы СУБД (пространственные и т.д.) | MySQL имеет подключаемую архитектуру InnoDB | PosgreSQL более расширяемый и пластичный, в сравнении с MySQL |
Удобство использования | Средняя | Высокая нечувствительна к регистру позволяет включать неагрегированные столбцы в SELECT, который использует предложение GROUP BY | Конечно, удобство это субъективное ощущение, но по ряду фактических свойств, MySQL проще. |
Работоспособность (Operability) | При не экстремальных нагрузках СУБД работает стабильно | При не экстремальных нагрузках СУБД работает стабильно | И MySQL и PostgreSQL работают стабильно при штатных нагрузках, но при экстремальных, могут наблюдаться сбои |
Экосистема | PostgreSQL активнее поддерживается сообществом, и имеет более широкую экосистему, чем MySQL | MySQL имеет широкую экосистему, но уступающую PostgreSQL | За счет более активного сообщества, PostgreSQL имеет более широкую экосистему, чем MySQL |
Популярность в России | В России PostgreSQL более популярен. | В России MySQL менее популярен. | В России, как на более молодом рынке, PostgreSQL, имеющий восходящий тренд использования, более популярен, чем MySQL |
Популярность PostgreSQL vs MySQL
На сегодня в мире MySQL используется чаще, чем PostgreSQL.
При этом в России ситуация обратная. По количеству запросов в Google MySQL лидирует, но при этом по количеству запросов в Яндекс лидирует PostgreSQL.
Динамика популярности показывает, что PostgreSQL постепенно вытесняет MySQL.
Основные преимущества PostgreSQL перед MySQL
Лучший оптимизатор запросов.
Оптимизатор запросов PostgreSQL представляет более зрелую, продвинутую функциональность в сравнении с MySQL.
Большее соответствие стандарту SQL ANSI.
Хотя PostgreSQL и не соответствует полностью стандарту ANSI (как и любая другая база данных, поддерживающая SQL), но в сравнении с MySQL есть заметная разница. Так, MySQL не поддерживает такие подзапросы как «LIMIT» или «ALL». MySQL также не поддерживает стандартные для SQL вещи, как «INTERSECT» или «OUTER JOIN».
Более крупная экосистема.
Более активное сообщество.
Более широкий функционал.
PostgreSQL поддерживает больше форматов данных, имеет полезные расширения (в том числе пространственные), обладает более продвинутой системой индексирования, содержит больше возможностей управления транзакциями, дает возможность написания хранимых процедур на большем количестве языков. PostgreSQL предлагает более сложные типы данных и позволяет объектам наследовать свойства.
Больше актуальной документации в свободном доступе.
Лучшая расширяемость. PostgreSQL содержит такие расширенные типы данных, которых нет в MySQL. А именно, типы сетевых адресов, собственный UUID, геометрические данные/ГИС, JSON, который можно индексировать, временные метки с учетом часового пояса, свои операторы, типы данных и типы индексов.
Основные преимущества MySQL перед PostgreSQL
MySQL обладает меньшим порогом входа за счет более простого функционала. Хотя порог входа в PostgreSQL также не является большим.
MySQL предлагает поддержку 15 различных механизмов хранения, кроме механизма хранения по умолчанию InnoDB. Широкий набор механизмов хранения позволяет быстро использовать их для других вариантов использования.
В некоторых случаях MySQL выдерживает большую нагрузку.
MySQL использует один процесс и поддерживает один поток, что требует меньше выделяемых вычислительных ресурсов.
Спорные и ситуативные факторы
Скорость
MySQL работает быстрее с командами только для чтения за счет параллелизма, в то время как PostgreSQL лучше работает с операциями чтения-записи, массивными наборами данных и сложными запросами. При этом разница в скорости идет на проценты, а не в разы, и скорее всего в 99% случаев использования, вы не заметите разницы.
Горизонтальная и вертикальная масштабируемость.
PostgreSQL лучше масштабируется вертикально (добавление ресурсов инстанса), а MySQL горизонтально, путем добавления новых инстансов в кластер.
Итоги
Мы рассмотрели и сравнили две самых популярных Open Source СУБД - PostgreSQL и MySQL. У каждой из рассмотренных СУБД есть свои преимущества и недостатки. На текущий момент в мире MySQL распространен шире, но PostgreSQL растет быстрее, отнимая у MySQL долю рынка. Рост PostgreSQL происходит за счет более активного сообщества, более широкого функционала и развитой экосистемы, и на Российском рынке он уже стал лидирующей реляционной СУБД.
Вы можете развернуть базы данных PostgreSQL и MySQL в облаке Amvera Cloud c помощью push в выделенный Git-репозиторий. Для хостинга баз данных PostgreSQL и MySQL нужно выполнить несколько простых шагов, описанных в инструкциях для PostgreSQL и MySQL соответственно. Стоимость хостинга баз данных начинается от 170 руб. в месяц. Для теста системы вы можете ввести код QCOWI100, который добавит немного баланса для проведения экспериментов без необходимости предварительной оплаты.