Обзор версий MySQL - какой релиз выбрать?

Версии MySQL и их возможности

Какую версию базы данных MySQL следует использовать?История версий MySQL поможет разобраться в том, с какой именно версией сервера вам лучше работать. А если вы уже давно пользуетесь ею, наверняка будет интересно вспомнить, как развивалась эта система.

  • Версия 3.23 (2001). Этот релиз MySQL считается первым по-настоящему жизне­способным вариантом для широкого применения. В этом варианте MySQL еще не сильно превосходила язык запросов на основе неструктурированных файлов, но MyISAM была представлена в качестве замены ISAM — более старой и гораз­до более ограниченной подсистемы хранения. Также стала доступна подсистема InnoDB, но из-за своей новизны она не была включена в стандартный двоичный дистрибутив. Чтобы использовать InnoDB, нужно было скомпилировать сервер самостоятельно. В версии 3.23 были добавлены полнотекстовая индексация и ре­пликация. Последняя была призвана стать той самой отличительной особенно­стью, которая сделала бы MySQL известной в качестве базы данных, по большей части управляемой через Интернет.
  • Версия 4.0 (2003). Появилась новая синтаксическая функция поддержки работы команд UNION и DELETE с несколькими таблицами. Репликация была переписана для использования двух потоков на реплике вместо одного потока, который вы­полнял всю работу и нес убытки от переключения задачи. InnoDB была запущена как стандартная составляющая сервера с полным набором отличительных харак­теристик, таких как строковая блокировка, внешние ключи и т. д. Кэширование запросов было введено в версии 4.0 (и с тех пор не изменилось). Также была представлена поддержка SSL-соединений.
  • Версия 4.1 (2005). Были добавлены дополнительные функции синтаксиса за­просов, включая подзапросы и команду INSERT ON DUPLICATE KEY UPDATE. Начала поддерживаться кодировка UTF-8. Появились новый двоичный протокол и поддержка предварительно подготовленных операторов.
  • Версия 5.0 (2006). В этой версии появилось несколько «корпоративных» функ­ций: представления, триггеры, хранимые процедуры и хранимые функции. Подсистема хранения данных ISAM полностью удалена, введены новые подси­стемы хранения, например Federated.
  • Версия 5.1 (2008). Этот релиз стал первым после того, как Sun Microsystems погло­тила MySQL АВ; работа над ним продолжалась более пяти лет, В версии 5.1 были представлены сегментирование, построчная репликация и разнообразные API для плагинов, включая API подключаемой подсистемы хранения. Подсистема хране­ния BerkeleyDB, первая транзакционная подсистема хранения в MySQL, удалена, а некоторые другие, такие как Federated, устарели. Кроме того, компания Oracle, которая к этому моменту уже владела Innobase Оy, выпустила подключаемую подсистему хранения InnoDB.
  • Версия 5.5 (2010). MySQL 5.5 была первой версией, выпущенной после того как Oracle поглотила Sun (и, следовательно, MySQL). Основное внимание было уделено улучшению производительности, масштабируемости, репликации, сег­ментированию и поддержке Microsoft Windows, внесено и множество других улучшений. InnoDB стала подсистемой хранения, установленной по умолчанию, а многие устаревшие функции, настройки и параметры были удалены. Добавлены база данных PERFORMANCE_SCHEMA, а также первая партия расширенного инструмен­тария. Добавлены новые API плагинов для репликации, аутентификации и аудита. Появилась поддержка полусинхронного механизма репликации, и в 2011 году Oracle выпустила коммерческие плагины для аутентификации и организации пула потоков. Внесены значительные изменения в архитектуру InnoDB, напри­мер, появился разделенный буферный пул.
  • Версия 5.6 (2013). MySQL 5.6 приобрела множество новых функций, в том числе впервые за многие годы появились значительные улучшения оптимизатора за­просов, больше плагинов API (например, один для полнотекстового поиска), улучшения механизма репликации и значительно расширенные инструменты в базе данных PERFORMANCE_SCHEMA. В то время как версия MySQL 5.5 в основном стремилась улучшить и исправить базовые функции и содержала немного нововведений, MySQL 5.6 нацелена на серьезное улучшение работы сервера и повы­шение производительности.
  • Версия 6.0 (отменена). Версия 6.0 вносит путаницу из-за перекрывающейся нумерации. Она была анонсирована во время разработки версии 5.1. Ходили слухи о большом количестве новых функций, таких как резервные онлайн-копии и внешние ключи на уровне сервера для всех подсистем хранения, улучшение механизма подзапросов и поддержка пула потоков. Этот релиз был отменен, и Sun возобновила разработку версии 5.4, которая в итоге была выпущена как версия 5.5. Многие из возможностей версии 6.0 реализованы в версиях 5.5 и 5.6.
  • Версия 8.0 (2018). Основные возможности версии 8.0 хорошо изложены в статье на нашем портале.

Давайте подведем итоги исторического обзора MySQL: на раннем этапе жизненного цикла она стала прорывной технологией. Несмотря на ограниченные функциональ­ные возможности и второсортные функции, ее отличительные особенности и низ­кая стоимость сделали ее революционной новинкой, которая взорвала Интернет. В ранних версиях 5.x MySQL попыталась выйти на корпоративный рынок с такими функциями, как представления и хранимые процедуры, но они были нестабильны и содержали ошибки, поэтому не все шло как по маслу. Если вдуматься, то поток исправлений ошибок, допущенных в MySQL 5.0, не иссяк вплоть до релиза 5.0.50, a MySQL 5.1 была ненамного лучше. Выпуск релизов 5.0 и 5.1 был отложен, а погло­щения, произведенные Sun и Oracle, заставили многих наблюдателей понервничать. Но, на наш взгляд, развитие идет полным ходом: версия MySQL 5.5 стала релизом самого высокого качества в истории MySQL, Oracle сделала MySQL гораздо более удобной для корпоративных клиентов, а версия 5.6 обещает значительные улучше­ния функциональности и производительности.

Говоря о производительности, неплохо было бы продемонстрировать базовый эталонный тест изменения производительности сервера с течением времени. Мы решили не тестировать версии старше 4.1, потому что сейчас редко можно встретить 4.0 и более старые. Кроме того, очень сложно сравнивать эталонные тесты разных версий по причинам, о которых вы подробнее прочтете в следующей главе. Мы получили массу удовольствия, создавая метод эталонного тестирования, который будет работать одинаково со всеми тестируемыми версиями сервера, и нам потребовалось предпринять множество попыток, прежде чем мы достигли успеха. В табл. 1. показано количество транзакций в секунду для нескольких уровней конкурентного доступа.


Таблица 1. Эталонный тест блокировки «только для чтения» нескольких версий MySQL

Потоки

MySQL 4.1

MySQL 5.0

MySQL 5.1

MySQL 5.1 c InnoDB

MySQL 5.5

MySQL 5.6

1

686

640

596

594

531

526

2

1307

1221

1140

1139

1077

1019

4

2275

2168

2032

2043

1938

1831

8

3879

3746

3606

3681

3523

3320

16

4374

4527

4393

6131

5881

5573

32

4591

4864

4698

7762

7549

7139

64

4688

5078

4910

7536

7269

6994

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

Прежде чем интерпретировать результаты, следует немного рассказать о самом эталонном тесте. Мы запускали его на машине Cisco UCS С250 с двумя шести­ядерными процессорами, каждый из которых имеет два аппаратных потока. Сервер содержит 384 Гбайт ОЗУ, но мы провели тест с объемом данных 2,5 Гбайт, поэтому настроили для MySQL пул буферов размером 4 Гбайт. Эталонным тестом была стандартная рабочая нагрузка «только для чтения» SysBench, причем все данные были в InnoDB, хранились в оперативной памяти и зависели только от быстродей­ствия центрального процессора. Мы провели 60-минутный тест для каждой точки замера, измеряя пропускную способность каждые 10 секунд и используя 900 секунд измерений после прогрева и стабилизации сервера для получения окончательных результатов.

Теперь, глядя на результаты, мы можем заметить две основные тенденции. Во-первых, версии MySQL, которые включают плагин InnoDB, намного лучше работа­ют при более высокой степени конкурентности, то есть они более масштабируемы.

Этого следовало ожидать, так как нам известно, что предыдущие версии серьезно ограничены в плане поддержки конкурентности. Во-вторых, более новые версии MySQL медленнее старых при однопоточных рабочих нагрузках, чего вы, воз­можно, и не ожидали. Но это легко объяснить, отметив, что нагрузка «только для чтения» — очень простая рабочая нагрузка. Новые версии серверов имеют более сложную грамматику SQL и множество других функций и улучшений, которые позволяют производить более сложные запросы, но также требуют дополнительных издержек для простых запросов, которые мы как раз и использовали в эталонном тесте. Старые версии сервера проще и, следовательно, имеют преимущество при выполнении простых запросов.

Эталонный тест блокировки «только для чтения» нескольких версий MySQL

Рис. 1. Эталонный тест блокировки «только для чтения» нескольких версий MySQL

Мы хотели показать вам более сложный эталонный тест чтения/записи (например, ТРС-С) с более высокой степенью конкурентности, но не смогли сделать это для большого количества столь разных версий сервера. И можем сказать, что в целом новые версии сервера имеют более высокую и более стабильную производительность при сложных нагрузках, особенно при высокой степени конкурентности, и с большим набором данных.

MySQL 8.0 еще слишком сырая и по ней накоплено мало статистики. Ее следует использовать только тогда, когда Вам необходимы новые функции этой версии, описанные по ссылке в статье выше.

Какую версию лучше использовать вам? Это зависит от особенностей вашего бизнеса больше, чем от технических потребностей. В идеале вы должны ориентироваться на самую новую из доступных версий, но, конечно, можете подождать до тех пор, пока не появится новейшая версия с первыми исправлениями ошибок. Если вы только разрабатываете приложение, то есть еще не выпустили его, можете задуматься о его создании в следующей версии, чтобы максимально отсрочить обновление и увели­чить жизненный цикл.

 

Вас заинтересует / Intresting for you:

Использование MySQL в качестве...
Использование MySQL в качестве... 1586 просмотров Андрей Волков Tue, 01 Oct 2019, 05:41:51
Модель развития базы данных My...
Модель развития базы данных My... 952 просмотров Ирина Светлова Thu, 10 Jan 2019, 12:29:03
MyISAM: подсистема хранения ба...
MyISAM: подсистема хранения ба... 1678 просмотров Ирина Светлова Wed, 04 Aug 2021, 19:39:29
MySQL: подсистемы хранения сто...
MySQL: подсистемы хранения сто... 878 просмотров Ирина Светлова Sat, 07 Aug 2021, 10:28:39
Войдите чтобы комментировать

Обсудить эту статью

INFO: Вы отправляете сообщение как 'Гость'


MaxNiko аватар
MaxNiko ответил в теме #9872 10 мес. 3 дн. назад
Хорошо бы дополнить статью новыми релизами MySQL. А в идеале еще и в сравнении с MariaDb