Отличия MySQL от PostgreSQL. Выбираем что лучше, PostgreSQL или MySQL

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

  1. Лучший оптимизатор запросов.

Оптимизатор запросов PostgreSQL представляет более зрелую, продвинутую функциональность в сравнении с MySQL.

  1. Большее соответствие стандарту SQL ANSI.

Хотя PostgreSQL и не соответствует полностью стандарту ANSI (как и любая другая база данных, поддерживающая SQL), но в сравнении с MySQL есть заметная разница. Так, MySQL не поддерживает такие подзапросы как «LIMIT» или «ALL». MySQL также не поддерживает стандартные для SQL вещи, как «INTERSECT» или «OUTER JOIN».

  1. Более крупная экосистема.

  2. Более активное сообщество.

  3. Более широкий функционал

PostgreSQL поддерживает больше форматов данных, имеет полезные расширения (в том числе пространственные), обладает более продвинутой системой индексирования, содержит больше возможностей управления транзакциями, дает возможность написания хранимых процедур на большем количестве языков. PostgreSQL предлагает более сложные типы данных и позволяет объектам наследовать свойства.

  1. Больше актуальной документации в свободном доступе

  2. Лучшая расширяемость. PostgreSQL содержит такие расширенные типы данных, которых нет в MySQL. А именно, типы сетевых адресов, собственный UUID, геометрические данные/ГИС, JSON, который можно индексировать,  временные метки с учетом часового пояса, свои операторы, типы данных и типы индексов.

Основные преимущества MySQL перед PostgreSQL

  1. MySQL обладает меньшим порогом входа за счет более простого функционала. Хотя порог входа в PostgreSQL также не является большим.

  2. MySQL предлагает поддержку 15 различных механизмов хранения, кроме механизма хранения по умолчанию InnoDB. Широкий набор механизмов хранения позволяет быстро использовать их для других вариантов использования.

  3. В некоторых случаях MySQL выдерживает большую нагрузку.

  4. MySQL использует один процесс и поддерживает один поток, что требует меньше выделяемых вычислительных ресурсов.

Спорные и ситуативные факторы

  1. Скорость

MySQL работает быстрее с командами только для чтения за счет параллелизма, в то время как PostgreSQL лучше работает с операциями чтения-записи, массивными наборами данных и сложными запросами. При этом разница в скорости идет на проценты, а не в разы, и скорее всего в 99% случаев использования, вы не заметите разницы.

  1. Горизонтальная и вертикальная масштабируемость.

PostgreSQL лучше масштабируется вертикально (добавление ресурсов инстанса), а MySQL горизонтально, путем добавления новых инстансов в кластер.

Итоги

Мы рассмотрели и сравнили две самых популярных Open Source СУБД - PostgreSQL и MySQL. У каждой из рассмотренных СУБД есть свои преимущества и недостатки. На текущий момент в мире MySQL распространен шире, но PostgreSQL растет быстрее, отнимая у MySQL долю рынка. Рост PostgreSQL происходит за счет более активного сообщества, более широкого функционала и развитой экосистемы, и на Российском рынке он уже стал лидирующей реляционной СУБД. 

Источник: https://habr.com/ru/companies/amvera/articles/756592/


Интересные статьи

Интересные статьи

Привет, Хаброжители! Хотите выжать из MySQL максимум возможностей? Вам поможет уникальная книга, написанная экспертами для экспертов. Пора изучать лучшие практики, начиная с постановки целей ур...
Миграция базы данных 1С с MS SQL на PostgreSQL – по-прежнему насущная тема, особенно в контексте импортозамещения. На наших вебинарах и в беседах с клиентами мы получаем много вопросов по нюансам мигр...
Недавно мы написали о том, насколько экономически разумно «переезжать» с Oracle на PostgreSQL. В этом материале хотели бы поделиться практическим опытом, как осуществить миграцию небольшой СУБД, и как...
Собрали для вас много новых инсайтов, записей важных вебинаров, книжек и шпаргалок. Прокачивайте скилы, читайте, смотрите, думайте, применяйте на практике! Станьте частью...
Эта статья — продолжение рассказа о новом в PostgreSQL 12. Мы уже разобрали SQL/JSON (патч JSONPath) в статье «Что заморозили на feature freeze 2019. Часть I. JSONPath», теперь очередь CTE. ...