Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

MySQL: для чего нужна, как устроена, основные преимущества и недостатки

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
24 июня 2022 г.
2757
6 минут чтения
Средний рейтинг статьи: 5

При работе над проектом у разработчика возникает дилемма: какую базу данных выбрать? С развитием технологий появилось большое количество разнообразных вариантов со своими особенностями. Выбор правильной базы данных стал отдельной проблемой. Ведь это решение повлияет на весь проект.

My SQL  Для Чего Нужна, Как Устроена, Основные Преимущества И Недостатки (1)

MySQL — это популярная система управления базами данных. Первая версия этой СУБД была выпущена в 1994 году компанией MySQL AB. В 2008 году эту компанию приобрела Sun Microsystems, которую, в свою очередь, приобрела Oracle в 2010 году.

По распространенности MySQL уступает Oracle Database. Так получилось, что двумя самыми популярными система управления базами данных владеет Oracle. Разработчики уважают и выбирают MySQL за производительность и безопасность. В этой статье расскажем о преимуществах и недостатках и для чего нужна база данных MySQL.

Преимущества MySQL

Производительность

Для веб-приложений важна скорость работы. Пользователь не будет ждать загрузки страницы — он просто уйдет с неё, если приложение не будет работать достаточно быстро. В плане производительности приложения «болезненным» местом является база данных, и MySQL не подведет вас.

Кроссплатформенность

MySQL предоставляет кроссплатформенную базу данных: она работает на Linux, FreeBSD и конечно на Windows. Этот критерий нужно учитывать при выборе СУБД для проектов, нацеленных на несколько платформ, в частности веб-приложений. К слову, MySQL входит в состав популярных стеков для разработки веб-приложений — LAMP (Linux, Apache, MySQL, PHP) и WAMP (Windows, Apache, MySQL, PHP).

Бесплатная СУБД

Oracle развивает MySQL как проект с открытым исходным кодом, что позволяет сообществу вносить в него свой вклад и, при необходимости, адаптировать его под свои задачи. СУБД предоставляется для конечных пользователей бесплатно. Многие компании выбирают в качестве СУБД MySQL из-за того, что она бесплатна. 

Oracle предлагает клиентам некоторые проприетарные модули с закрытым кодом, для использования которых потребуется денежное вложение. Но эти модули нужны не всем и не всегда.

Выбор движков

Движок базы данных (database engine) — это программный модуль, с помощью которого СУБД создает, читает и обновляет данные в базе. В MySQL есть два типа движков: транзакционные и нетранзакционные. Транзакционные движки хранения данных подразумевают, что операции в этих БД могут быть отменены, если они не завершены.

Всего MySQL поддерживает 8 движков:

InnoDB — это распространенный движок, который используется в MySQL по умолчанию.  Он поддерживает ACID, блокировку на уровне строк, восстановление после сбоев и многопоточность. Также это единственный движок, который обеспечивает ограничение ссылочной целостности внешнего ключа. Oracle советует использовать именно InnoDB, за исключением ряда случаев.

MyISAM — этот движок использовался по умолчанию до появления InnoDB. И в отличие от него, MyISAM не поддерживает ACID. В этом движке реализована блокировка только на уровне таблиц, поэтому он небезопасен для транзакций. В тоже время MyISAM оптимизирован для чтения. Сфера применения MyISAM — это системы хранения с минимальными транзакционными данными.

Memory — этот движок реализуется хранение данных в памяти в виде кучи. Такая система обеспечивает очень быстрый доступ к данным. Memory поддерживает блокировку на уровне таблиц и хранит данные в оперативной памяти — при перезагрузке сервера они теряются. Этот движок подходит для временных таблиц. 

CSV — этот движок хранит данные в файлах формата .csv. Не поддерживает индексирование и разделение. CSV используется для обмена данными между различными программами или приложениями.

Merge — движок работает с таблицами MyISAM. Он логически группирует ряд идентичных таблиц MyISAM и ссылается на них, как на один объект. Merge упрощает управление большими объемами данных и используется в системах хранения данных.

Archive — этот движок оптимизирован для высокоскоростной вставки. При вставке он сжимает данные. Archive не поддерживает транзакции, операции DELELE и UPDATE, но зато поддерживает блокировку на уровне строк. Отлично подходит для хранения больших объемов архивных данных, на которые редко ссылаются.

Federated используется создания одной БД на нескольких физических серверах.  Подходит для распределенных систем.

Движок Blackhole принимает данные, но не сохраняет их. На первый взгляд этот движок бесполезен, но на самом деле он находит применение при репликации данных и тестировании. Blackhole можно использовать в качестве фильтра между серверами.

Безопасность

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

Сообщество

Большое и развитое сообщество MySQL не оставит пользователя одного с проблемой. Кроме того, благодаря сообществу на базе MySQL появились новые системы управления базами данных — Drizzle, OurDelta, Percona Server и, самый популярный, MariaDB.

Минусы MySQL

Работа с большими базами

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

Большие объемы информации— это сфера применения для Oracle Database или SQL Server, а не MySQL.

SQL

MySQL не соответствует стандарту SQL: СУБД не поддерживает некоторые функции и имеет расширения, не относящиеся к стандартному SQL. Для большинства проектов это не станет серьезной проблемой, но при миграции на другие СУБД этот момент может всплыть.

Развитие

MySQL — это проект с открытым исходным кодом, что негативно сказывается на скорости его развития. Сообщество разработчиков сосредоточено в первую очередь на поддержку уже существующих функций, а Oracle, с учетом наличия проприетарных модулей для MySQL с закрытым кодом, не сильно заинтересованы в развитии проекта.

Сфера применения

MySQL достаточно универсальная система управления базами данных. При выборе MySQL в качестве СУБД нужно отталкиваться от требований проекта. В целом, MySQL находит применение в:

  • малых и средних веб-приложениях;
  • проектах с требованиями к безопасности;
  • в случаях, когда встроенных систем управления базами данных (например SQLite) не хватает, а продукты уровня Oracle Database или SQL Server избыточны;
  • проектах, подразумевающих производительность.

Но, несмотря на универсальность MySQL, в некоторых случаях стоит от неё отказаться в пользу других решений:

  • проект подразумевает строгое соответствие стандарту SQL;
  • в проекте необходим функционал, который не может предоставить MySQL «из коробки»;
  • предполагается хранения очень больших объемов данных;

Заключение

MySQL — это система управления базами данных, которая покажет себя при работе с небольшими проектами. Но, как и других продуктов, у MySQL есть плюсы и минусы. Это нужно учитывать, если захотите использовать MySQL в качестве СУБД.

Если вы решили выбрать MySQL, но только начинаете с ней работать, вам поможет наша статья «Основы MySQL».

Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать. 

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

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