Сравнение PostgreSQL vs MySQL: что подходит вашему бизнесу?

Роман Андреев
Технический писатель
18 января 2023 г.
Время прочтения: 7 минут

PostgreSQL и MySQL — одни из самых популярных реляционных систем управления базами данных (РСУБД). В статье рассмотрим функциональные различия между ними и сравним их производительность, чтобы вы смогли выбрать подходящую СУБД для своего бизнеса.

PostgreSQL vs MySQL

Несмотря на сближение функциональных возможностей Postgres и MySQL, различия между ними остаются. Например, Postgres лучше подходит для управления крупными и сложными базами данных (БД), а MySQL оптимальна для БД сайтов и онлайн-приложений, поскольку ориентирована на скорость работы. Это вытекает из устройства этих РСУБД, которое мы и рассмотрим.

Хранение данных в Postgres и MySQL

Как и любые другие реляционные СУБД, эти системы хранят данные в таблицах, однако в MySQL для этого используется несколько движков, в то время как PostgreSQL использует только Storage Engine. С одной стороны, это делает Postgres более удобной, поскольку движки в MySQL по-разному считывают данные и записывают их на диск. С другой, MySQL предлагает больше гибкости в выборе движка для работы с данными. Однако плюс PostgreSQL в том, что в Storage Engine реализована функция наследования таблиц, которые представлены здесь как объекты. Поэтому действия с ними производятся при помощи объектно-ориентированных функций.

Поддержка

Стандарту SQL уже более 35 лет, при этом только разработчики Postgres стараются привести свой продукт к полному соответствию стандарту. Разработчики MySQL используют иной подход к SQL: если какая-то функция позволяет упростить работу с системой, она будет реализована даже при несоответствии этой реализации стандарту. Это делает MySQL более дружественной к пользователю в сравнении с PostgreSQL.

Если говорить про поддержку со стороны сообщества, то число разработчиков MySQL, конечно, пока еще превосходит тех, кто работает с Постгрес, однако получить квалифицированную помощь можно в обоих сообществах. Кроме того, по PostgreSQL написано много бесплатных руководств и даже книг, в которых содержатся ответы на большинство вопросов. Добавим, что обе платформы бесплатные, однако у MySQL существует несколько коммерческих версий, что в ряде случаев может приводить к дополнительным тратам.

Языки программирования

Обе системы поддерживают большое количество языков программирования: из популярных отметим C++, Java, Python, lua, PHP, поэтому у сотрудников из отдела разработки компании не будет проблем с внедрением функций любой из этих систем.

Операционные системы

MySQL более универсальная система, которая работает в среде Windows, Linux, MacOS и в ряде других операционных систем. Postgres изначально «заточен» под Linux, однако с помощью интерфейса REST API становится таким же универсальным решением, которое работает под любой ОС.

Обработка данных

Возможностей для обработки данных больше у Postgres. Например, чтобы перемещаться по данным таблиц, используется курсор, при этом ответы записываются в память сервера БД, а не в память клиента, как это реализовано в MySQL. Также PostgreSQL позволяет строить индексы одновременно для нескольких столбцов. При этом поддерживаются разные индексы, позволяющие работать с несколькими типами данных. Еще эта СУБД предлагает использование регулярных выражений в запросах. Однако новые поля в Postgres добавляются только в конце таблиц.

Параллельная обработка данных лучше организована в PostgreSQL, поскольку эта платформа имеет встроенную реализацию MVCC (многоверсионный параллельный доступ). MVCC также может поддерживаться и в MySQL, но это возможно только при условии поддержки со стороны InnoDB. А относительно репликации отметим, что Постгрес поддерживает логическую, потоковую и двунаправленную, а MySQL — круговую, а также master-master и master-standby. Под репликацией мы понимаем копирование данных между БД, расположенными на разных серверах.

PostgreSQL и MySQL: сравнение производительности

Проведение тестов будет честным, если сравнивать две чистых системы, то есть решения «из коробки». Тестирование с индексом дает следующие результаты:

  • При добавлении Postgres оказывается более чем в 2,7 раза быстрее, обрабатывая БД на 400 тыс. записей за 5,5 секунд против 15 сек. у MySQL.
  • При внутреннем объединении Postgres обрабатывает 400 тыс. записей за 1,1 сек., а MySQL за 2,8 сек., что дает выигрыш более чем в 2,5 раза.
  • При сортировке с индексом аналогичное количество записей PostgreSQL  обрабатывает за 0,9 сек., а MySQL — за 1,5 сек.
  • Показатели при группировке следующие (БД аналогичная, на 400 тыс. записей): у PostgreSQL — 0,35 сек., у MySQL — 0,52 сек.
  • Выборка с индексом дает преимущество «Постгрес» в 2 раза: 0,6 сек. против 1,2 сек.

Что касается обновления в БД, то здесь Postgres демонстрирует постепенный рост по мере увеличения количества записей, а вот MySQL обрабатывает их за примерно одно и то же время, начиная со 100 тыс. записей. Это связано с разной реализацией хранения данных. Тем не менее преимущество у PostgreSQL даже на больших объемах данных существенное: 3,5 против 9,5 сек. на 400 тыс. записей, то есть более чем в 2,7 раза.

При отмене индексов PostgreSQL также выдает на удивление высокую производительность, обрабатывая БД на 400 тыс. записей за 1,3, 0,7 и 2,2 сек. при внутреннем объединении, выборке и обновлении соответственно. 

Таким образом, производительность Postgres оказывается выше в среднем в 2 раза (2,06). При этом изначально MySQL позиционировалась как платформа с улучшенной производительностью, однако постоянная оптимизация со стороны разработчиков PostgreSQL сделали их продукт более производительным.

Преимущества для разработчиков

Рассмотрим только уникальные функции, которые характерны для конкретной платформы. Поэтому, например, мы не будем касаться здесь поддержки MVCC или ACID, поскольку эти функции есть у обеих систем.

С точки зрения разработчика MySQL хороша тем, что:

  • Обеспечивает повышенную гибкость и легко масштабируется, поскольку для нее создано более десяти движков, использующих разные алгоритмы хранения данных.
  • Лучше обрабатывает небольшие БД с операциями чтения (то есть без записи в БД).
  • Удобнее в управлении и поддержке, поскольку эта СУБД проще настраивается и не требует большого количества подготовительных действий перед началом работы.

С точки зрения разработчика PostgreSQL хороша тем, что:

  • Предлагает объектно-ориентированный подход к данным, что позволяет ввести функции наследования и создавать более сложные структуры табличных данных, не вписывающихся в стандартную реляционную модель.
  • Лучше обрабатывает БД с операциями записи, в том числе с валидацией записываемых данных.
  • Поддержка функций ООП открывает возможности для обработки данных в формате NoSQL, включая данные в таких форматах, как, например, XML или JSON.
  • Способна поддерживать БД без ограничения на объем данных. Есть компании, которые используют Postgres для поддержки своих БД размером до нескольких петабайт.

Сравнение PostgreSQL и MySQL наглядно

Для наглядности представим главные особенности обеих систем в виде таблицы:

 

PostgreSQL

MySQL

Соответствие стандарту SQL

почти полное

частичная совместимость

Поддерживаемые ОС

Solaris, Windows, Linux, OS X, Unix, Hp-UX

Solaris, Windows, Linux, OS X, FreeBSD

Применение

Массивные базы данных со сложными запросами (например, Big Data)

Более легкие базы данных (например, веб-сайтов и приложений)

Типы данных

Поддерживает расширенные типы данных, включая массивы, hstore

Поддерживает стандартные типы данных SQL

Наследование таблиц

Да

Нет

Триггеры

Поддерживает триггеры по большому количеству команд

Ограниченная поддержка триггеров по командам

Движки для хранения данных

Один (Storage Engine)

Разные

Как видим, ряд функций реализован только в Postgres. Обе системы поддерживают ODBC, JDBC, CTE (обобщенные табличные выражения), декларативное секционирование, GIS, SRS, оконные и ряд других функций.

Заключение

У обеих систем есть свои преимущества. MySQL справляется с задачами горизонтального масштабирования, ее проще настраивать и управлять ей, но если планируется расширение БД, а также работа с разными типами данных, лучше заранее подумать о внедрении Postgres. Кроме того, PostgreSQL — на 100% бесплатное решение, поэтому компании с ограниченным бюджетом могут использовать его, не опасаясь лишних трат.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону