MySQL
MySQL | |||
---|---|---|---|
Тип | реляционная СУБД, серверное программное обеспечение и открытое программное обеспечение | ||
Разработчики | MySQL AB и Oracle | ||
Операционная система | Unix-подобная операционная система | ||
Первый выпуск | 2001 | ||
Последняя версия | |||
Тестовая версия | |||
| |||
| |||
Лицензия |
проприетарная[5] |
||
Сайт | mysql.com (англ.) | ||
Медиафайлы на Викискладе |
MySQL (МФА:
MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер, XAMPP, VertrigoServ. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
26 февраля 2008 года
Сообществом разработчиков MySQL созданы различные форки кода, такие как Drizzle[англ.], OurDelta, Percona Server и MariaDB. Все эти форки уже существовали на момент поглощения компании Sun корпорацией Oracle.
О происхождении MySQL
MySQL возникла как попытка применить mSQL к собственным разработкам компании: таблицам, для которых использовались ISAM — подпрограммы низкого уровня. В результате был выработан новый SQL-интерфейс, но API-интерфейс остался в наследство от mSQL. Откуда происходит название «MySQL» — доподлинно неизвестно. Разработчики дают два варианта: либо потому, что практически все наработки компании начинались с префикса «My…» (с англ. — «моё…»), либо в честь дочери с именем Мю (фин. My) одного из разработчиков системы Микаэля Видениуса[10][11].
Логотип MySQL в виде дельфина носит имя «Sakila». Он был выбран из большого списка предложенных пользователями «имён дельфина». Имя «Sakila» было отправлено Open Source-разработчиком Ambrose Twebaze.
Лицензирование
MySQL имеет двойное лицензирование. MySQL может распространяться в соответствии с условиями лицензии
Платформы
MySQL портирована на большое количество платформ:
Языки программирования
MySQL имеет
MyODBC представляет собой драйвер
История выпусков
- Версия для Windows систем (Windows 95 и NT) выпущена 8 января 1998.
- Версия 3.23: бета-версия в июне 2000, выпуск в январе 2001.
- Версия 4.0: бета в августе 2002, релиз в марте 2003.
- Версия 4.1: бета в июне 2004, релиз в октябре 2004.
- Версия 5.0: бета в марте 2005, релиз в октябре 2005.
- Версия 5.1: разработка велась с ноября 2005, релиз в ноябре 2008.
- Версия 5.4: бета в апреле 2009, не была выпущена.
- Версия 5.5: релиз в декабре 2010.
- Версия 5.6: в разработке (последний релиз — 5.6.50 от 19.10.2020).[21]
- Версия 5.7: в разработке (последний релиз — 5.7.32 от 19.10.2020).[22]
MySQL 4.0
Несмотря на то, что версия 4.0 является устаревшей, она всё ещё имеет значительное распространение [источник не указан 1822 дня]. Основные возможности этой версии:
- практически полная реализация SQL-99, плюс расширения;
- межплатформенная совместимость;
- независимые типы таблиц (MyISAM для быстрого чтения, InnoDB для транзакций и ссылочной целостности);
- транзакции;
- поддержка SSL;
- кэширование запросов;
- репликация: один головной сервер на одного подчинённого, много подчинённых на одного головного;
- полнотекстовая индексация и поиск с использованием типа таблиц MyISAM;
- внедрённая библиотека базы данных;
- поддержка Юникода (UTF-8);
- таблицы InnoDB, обеспечивающие соответствие требованиям ACID;
- встроенный сервер, позволяющий включать MySQL в автономные приложения.
MySQL 4.1
Рекомендованной версией на
- вложенные запросы и производные таблицы.
- новая система кодировок и сортировок;
- более быстрый и гибкий протокол клиент-сервер с поддержкой подготовленных запросов, обеспечивающий их оптимальное исполнение;
- новая программа установки и настройки для Microsoft Windows и Linux;
- защищённые через OpenSSL соединения клиент-сервер;
- высокооптимизированная библиотека, которая может быть использована в сторонних программах;
- полноценная поддержка Юникода (UTF-8 и UCS2);
- стандартные пространственные типы данных GISдля хранения географической информации;
- улучшенный полнотекстовый поиск и система помощи.
MySQL 5.0
Версия MySQL 5.0 вышла 24 октября 2005 года, в этой версии значительно расширена функциональность, которая ставит MySQL в один ряд с коммерческими СУБД. Если раньше СУБД MySQL обвиняли в недостаточной поддержке стандарта SQL, то с появлением пятой версии этой популярной базы данных появилась практически полная поддержка стандарта SQL. MySQL 5.0 содержит следующие нововведения:
- хранимые процедуры и функции;
- обработчики ошибок;
- курсоры;
- триггеры;
- представления;
- информационная схема (так называемый системный словарь, содержащий метаданные).
MySQL 5.1
Версия MySQL 5.1 продолжает путь к стандарту SQL:2003. MySQL 5.1 содержит следующие нововведения[23][24].
- Сегментирование — возможность разбить одну большую таблицу на несколько частей, размещенных в разных файловых системах, основываясь на определённой пользователем функции. При определённых условиях это может дать серьёзное увеличение производительности и, кроме того, облегчает масштабирование таблиц.
- Изменено поведение ряда операторов, для обеспечения большей совместимости со стандартом SQL2003.
- Построчная репликация (англ. row-based replication), при которой в бинарный лог будет записываться только информация о реально изменённых строках таблицы вместо оригинального (и, возможно, медленного) текста запроса. Построчную репликацию можно использовать только для определённых типов sql-запросов, в терминах MySQL — смешанная репликация (англ. mixed replication).
- Встроенный crontab.
- Дополнительный набор функций для обработки XML, реализация поддержки XPath.
- Новые средства диагностики проблем и утилиты для анализа производительности. Расширены возможности по управлению содержимым лог-файлов, логи теперь могут быть сохранены и в таблицах general_log и slow_log. Утилита mysqlslap позволяет провести нагрузочное тестирование БД с записью времени реакции на каждый запрос.
- Для упрощения операции обновления подготовлена утилита mysql_upgrade, которая выполнит проверку всех существующих таблиц на предмет совместимости с новой версией, и при необходимости выполнит надлежащие корректировки.
- MySQL Cluster отныне выпущен как отдельный продукт, базирующийся на MySQL 5.1 и хранилище NDBCLUSTER.
- Значительные изменения в работе MySQL Cluster, такие, как, например, возможность хранения табличных данных на диске.
- Возврат к использованию встроенной библиотеки libmysqld, отсутствовавшей в MySQL 5.0.
- API для плагинов, которое позволяет загружать сторонние модули, расширяющие функциональность (например, полнотекстовый поиск), без перезапуска сервера.
- Реализация парсера полнотекстового поиска в виде plug-in.
- Новый тип таблиц Maria (устойчивый к сбоям клон MyISAM).
Тип таблиц Maria
Maria (начиная с версии 5.2.x — Aria) — расширенная версия хранилища MyISAM, с добавлением средств сохранения целостности данных после краха.
Основные достоинства Maria[25]:
- В случае краха производится откат результатов выполнения текущей операции или возврат в состояние до команды LOCK TABLES. Реализация через ведение лога операций.
- Возможность восстановления состояния из любой точки в журнале операций, включая поддержку CREATE/DROP/RENAME/TRUNCATE. Может быть использовано для создания инкрементальных резервных копий, через периодическое копирование журнала операций.
- Поддержка всех форматов столбцов MyISAM, расширена новым форматом «rows-in-block», использующим страничный способ хранения данных, при котором данные в столбцах могут кэшироваться.
- В будущем будет реализовано два режима: транзакционный и без отражения в журнале транзакций, для некритичных данных.
- Размер страницы данных равен 8 Кб (в MyISAM 1 Кб), что позволяет достичь более высокой производительности для индексов по полям фиксированного размера, но медленнее в случае индексирования ключей переменной длины.
MySQL 5.5
Ветка MySQL 5.5 базируется на невыпущенной серии MySQL 5.4 и содержит ряд значительных улучшений, связанных с повышением масштабируемости и производительности, среди которых:
- Использование по умолчанию движка InnoDB.
- Поддержка полусинхронного (semi-synchronous) механизма репликации, основанного на патчах к InnoDB от компании Google.
- Улучшение функций по секционированию данных. Расширенный синтаксис для разбиения больших таблиц на несколько частей, размещенных в файловых системах (partitioning). Добавлены операции RANGE, LIST и метод оптимизации «partition pruning».
- Новый механизм оптимизации вложенных запросов и JOIN-операций.
- Переработана система внутренних блокировок.
- Интегрированы патчи Google с оптимизацией работы InnoDB на процессорах с большим количеством ядер.
MySQL 6.0
Версия MySQL 6.0 была заморожена на стадии альфа-тестирования. Первоначально было принято решение о создании версии 5.2, вскоре эта версия была переименована в 6.0. Однако позже информация о MySQL 6.0 исчезла с сайта, а разработчики сосредоточились на версии 5.5 и следующей за ней версии 5.6.
Одним из основных нововведений версии 6.0 планировался новый тип таблиц Falcon, разработанный в качестве потенциальной замены для InnoDB компании Innobase, приобретённой компанией Oracle. В связи с приобретением в 2010 году Sun Microsystems тем же Oracle, судьба Falcon остаётся под вопросом.
MySQL 5.7
Первая версия ветки MySQL 5.7.1 анонсирована 23 апреля 2013. Версия MySQL 5.7.8 адаптирована для Debian 8 и Ubuntu 15.04. Последний релиз — 5.7.32 от 19.10.2020.[22]
MySQL 8.0
Версия 8.0.0 была выпущена 12.09.2016, но официально пригодной к повсеместному использованию была версия 8.0.11, выпущенная 19.04.2018. Последняя версия — 8.0.33 (релиз от 18.04.2023)[26]
MySQL 8.4
Версия 8.4.0 выпущена 30.04.2024.
Технические характеристики
Максимальные размеры таблиц
Максимальный размер таблиц в MySQL 3.22 — до 4 гигабайт, в последующих версиях ограничений нет.
Размер таблицы ограничен её типом. В общем случае тип
В отличие от MyISAM, в InnoDB имеется значительное ограничение на количество столбцов, которое можно добавить в одну таблицу. Размер страницы памяти по умолчанию составляет 16 килобайт, из которых под данные отведено 8123 байта. Размер указателя на динамические поля составляет 20 байт. Таким образом, в случае использования динамического формата строки (ROW_FORMAT=DYNAMIC
), одна таблица может вместить максимум 409 столбцов типа blob
или text
.
Локализация
Начиная с версии 4.1 в СУБД MySQL внедрена новая система кодировок и сопоставлений. При использовании кодировки Windows-1251, перед выполнением SQL-инструкций необходимо настроить кодировку соединения при помощи операторов:
SET character_set_client='cp1251';
SET character_set_results='cp1251';
SET character_set_connection='cp1251';
Эти три оператора эквивалентны вызову одного оператора:
SET NAMES 'cp1251'
Переменная character_set_client
устанавливает кодировку данных, отправляемых от клиента, переменная character_set_results
устанавливает кодировку данных, отправляемых клиенту, переменная character_set_connection
устанавливает кодировку, в которую преобразуется информация, пришедшая от клиента, перед выполнением запроса на сервере.
При использовании Юникода UTF-8 этот оператор выглядит следующим образом:
SET NAMES 'utf8mb4'
Кодировка ISO 8859-5 не поддерживается.
Проблема с Юникодом
MySQL не позволяет корректно применять
Примечания
- ↑ Changes in MySQL 9.0.0 (2024-07-01, Innovation Release) — 2024.
- ↑ Changes in MySQL 8.4.1 (2024-07-01, LTS Release) — 2024.
- ↑ Changes in MySQL 8.0.38 (2024-07-01, General Availability) — 2024.
- ↑ COPYING
- ↑ https://www.mysql.com/about/legal/licensing/oem/
- ↑ http://dev.mysql.com/doc/refman/5.7/en/what-is-mysql.html Архивная копия от 14 июля 2017 на Wayback Machine 1.3.1. What is MySQL? MySQL 5.7 Reference Manual.
- ↑ MySQL :: Observations by Kaj Arnö @Sun Архивная копия от 23 марта 2012 на Wayback Machine (англ.)
- ↑ Oracle to Buy Sun . Дата обращения: 24 апреля 2013. Архивировано из оригинала 22 апреля 2009 года.
- ↑ Oracle завершила поглощение Sun Архивная копия от 27 января 2012 на Wayback Machine (англ.)
- ↑ MySQL. Руководство администратора = MySQL. Administrator's Guide. — М.: Издательский дом «Вильямс», 2005. — С. 624. — ISBN 5-8459-0805-1.
- ↑ [История MySQL (англ.) . Дата обращения: 25 марта 2008. Архивировано 31 августа 2009 года. История MySQL (англ.)]
- ↑ FOSS License Exception . Дата обращения: 6 мая 2016. Архивировано 15 мая 2016 года.
- ↑ MySQL :: MySQL 8.0 Reference Manual :: 28 Connectors and APIs . dev.mysql.com. Дата обращения: 15 апреля 2019. Архивировано 5 апреля 2019 года.
- ↑ B.3. Changes in Release 3.23.x (Lifecycle Support Ended) . Oracle. Дата обращения: 24 августа 2010. Архивировано из оригинала 4 апреля 2013 года.
- ↑ B.2. Changes in Release 4.0.x (Lifecycle Support Ended) . Oracle. Дата обращения: 24 августа 2010. Архивировано из оригинала 4 апреля 2013 года.
- ↑ B.1. Changes in Release 4.1.x (Lifecycle Support Ended) . Oracle. Дата обращения: 24 августа 2010. Архивировано из оригинала 4 апреля 2013 года.
- ↑ C.1. Changes in Release 5.0.x (Lifecycle Support Ended) . Oracle. Дата обращения: 24 августа 2010. Архивировано из оригинала 4 апреля 2013 года.
- ↑ C.1. Changes in Release 5.1.x (Production) . Oracle. Дата обращения: 24 августа 2010. Архивировано из оригинала 4 апреля 2013 года.
- ↑ C.1. Changes in Release 5.5.x (Production) . Oracle. Дата обращения: 24 августа 2010. Архивировано из оригинала 4 апреля 2013 года.
- ↑ C.1. Changes in Release 5.6.x (Development) . Oracle. Дата обращения: 24 августа 2010. Архивировано из оригинала 4 апреля 2013 года.
- ↑ [Changes in MySQL 5.6.50 (2020-10-19, General Availability) Сообщение о выпуске релиза MySQL 5.6.50 от 19.10.2020]
- ↑ 1 2 Сообщение о выпуске релиза MySQL 5.7.32 от 19.10.2020 . Дата обращения: 16 января 2021. Архивировано 28 февраля 2021 года.
- ↑ Нововведения MySQL 5.1 . Дата обращения: 13 августа 2009. Архивировано из оригинала 28 июня 2009 года.
- ↑ Обзор новшеств MySQL 5.1 на русском языке . Дата обращения: 22 декабря 2008. Архивировано 26 декабря 2008 года.
- ↑ Обзор возможностей хранилища Maria на opennet.ru . Дата обращения: 7 января 2009. Архивировано 9 февраля 2009 года.
- ↑ Сообщение о выпуске релиза MySQL 8.0.32 от 17.01.2023 . Дата обращения: 16 января 2021. Архивировано 26 февраля 2021 года.
- ↑ «The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multi-byte safe and may produce unexpected results with multi-byte character sets.» Дата обращения: 30 июля 2014. Архивировано 29 июля 2014 года.
Литература
- В. Васвани. MySQL: использование и администрирование = MySQL Database Usage & Administration. — М.: «Питер», 2011. — 368 с. — ISBN 978-5-459-00264-5.
- Стив Суэринг, Тим Конверс, Джойс Парк. PHP и MySQL. Библия программиста, 2-е издание = PHP 6 and MySQL 6 Bible. — М.: «Диалектика», 2010. — 912 с. — ISBN 978-5-8459-1640-2.
- Роберт Шелдон, Джоффрей Мойе. MySQL 5: базовый курс = Beginning MySQL. — М.: «Диалектика», 2007. — 880 с. — ISBN 978-5-8459-1167-4.
- Кузнецов Максим, Симдянов Игорь. MySQL на примерах. — СПб.: «БХВ-Петербург», 2008. — С. 952. — ISBN 978-5-9775-0066-1.
- Поль Дюбуа. MySQL, 3-е издание = MySQL, 3ed. — М.: «Вильямс», 2006. — 1168 с. — ISBN 5-8459-1119-2.
- Кузнецов Максим, Симдянов Игорь. MySQL 5. В подлиннике. — СПб.: «БХВ-Петербург», 2006. — С. 1024. — ISBN 5-94157-928-4.
- Кузнецов Максим, Симдянов Игорь. Самоучитель MySQL 5. — СПб.: «БХВ-Петербург», 2006. — С. 560. — ISBN 5-94157-754-0.
Ссылки
- mysql.com — официальный сайт MySQL (англ.)
- Документация на сайте разработчиков MySQL (англ.)
- Перевод стандарта MySQL версии 5.0.3-alpha (рус.)
- MySQL в каталоге ссылок Curlie (dmoz)