The Bug Genie
- 1 year ago
- 0
- 0
MySQL ( МФА: [maɪ ˌɛskjuːˈɛl] ) — свободная реляционная система управления базами данных . Разработку и поддержку MySQL осуществляет корпорация Oracle , получившая права на торговую марку вместе с поглощённой Sun Microsystems , которая ранее приобрела шведскую компанию MySQL AB . Продукт распространяется как под GNU General Public License , так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации .
MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP , , LAMP и в портативные сборки серверов Денвер , XAMPP , . Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM , поддерживающие полнотекстовый поиск, так и таблицы InnoDB , поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
26 февраля 2008 года Sun Microsystems приобрела MySQL AB за 1 млрд долларов , 27 января 2010 года Oracle приобрела Sun Microsystems за 7,4 млрд долларов и включила MySQL в свою линейку СУБД .
Сообществом разработчиков MySQL созданы различные форки кода, такие как , , и MariaDB . Все эти форки уже существовали на момент поглощения компании Sun корпорацией Oracle.
MySQL возникла как попытка применить mSQL к собственным разработкам компании: таблицам, для которых использовались ISAM — подпрограммы низкого уровня. В результате был выработан новый SQL -интерфейс, но API -интерфейс остался в наследство от mSQL. Откуда происходит название «MySQL» — доподлинно неизвестно. Разработчики дают два варианта: либо потому, что практически все наработки компании начинались с префикса «My…» (с англ. — «моё…»), либо в честь дочери с именем Мю ( фин. My ) одного из разработчиков системы Микаэля Видениуса .
Логотип MySQL в виде дельфина носит имя « ». Он был выбран из большого списка предложенных пользователями «имён дельфина». Имя « » было отправлено Open Source -разработчиком .
MySQL имеет двойное лицензирование. MySQL может распространяться в соответствии с условиями лицензии GPL . Однако по условиям GPL, если какая-либо программа использует библиотеки (или включает в себя другой GPL-код) MySQL, то она тоже должна распространяться по лицензии GPL. Это может расходиться с планами разработчиков, не желающих открывать исходные тексты своих программ. Для таких случаев предусмотрена коммерческая лицензия, которая также обеспечивает качественную сервисную поддержку. Для свободного программного обеспечения Oracle предоставляет отдельное исключение из правил, явным образом разрешающее использование и распространение MySQL вместе с ПО, распространяемым под лицензией из определённого Oracle списка.
MySQL портирована на большое количество платформ: AIX , BSDi , FreeBSD , HP-UX , Linux , macOS , NetBSD , OpenBSD , OS/2 Warp, SGI IRIX , Solaris , SunOS , SCO OpenServer , UnixWare , Tru64 , Windows 95 , Windows 98 , Windows NT , Windows 2000 , Windows XP , Windows Server 2003 , WinCE, Windows Vista , Windows 7 и Windows 10 . Существует также порт MySQL к OpenVMS . На официальном сайте СУБД для свободной загрузки предоставляются не только исходные коды, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули СУБД MySQL.
MySQL имеет API и коннекторы для языков Delphi , C , C++ , Эйфель , Java , Лисп , Perl , PHP , Python , Ruby , Smalltalk , Компонентный Паскаль , Tcl и Lua , библиотеки для языков платформы .NET , а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC .
MyODBC представляет собой драйвер ODBC (2.50) уровня 0 (с некоторыми возможностями уровней 1 и 2) для подсоединения совместимого с ODBC приложения к MySQL. MyODBC работает на всех системах Microsoft Windows и на большинстве платформ Unix .
Несмотря на то, что версия 4.0 является устаревшей, она всё ещё имеет значительное распространение [ источник не указан 1689 дней ] . Основные возможности этой версии:
Рекомендованной версией на 2005 год является MySQL 4.1, вышедшая 27 октября 2004 . Она содержит следующие нововведения:
Версия MySQL 5.0 вышла 24 октября 2005 года, в этой версии значительно расширена функциональность, которая ставит MySQL в один ряд с коммерческими СУБД . Если раньше СУБД MySQL обвиняли в недостаточной поддержке стандарта SQL , то с появлением пятой версии этой популярной базы данных появилась практически полная поддержка стандарта SQL. MySQL 5.0 содержит следующие нововведения:
Версия MySQL 5.1 продолжает путь к стандарту SQL:2003 . MySQL 5.1 содержит следующие нововведения .
Maria (начиная с версии 5.2.x — Aria) — расширенная версия хранилища MyISAM , с добавлением средств сохранения целостности данных после краха.
Основные достоинства Maria :
Ветка MySQL 5.5 базируется на невыпущенной серии MySQL 5.4 и содержит ряд значительных улучшений, связанных с повышением масштабируемости и производительности, среди которых:
Версия MySQL 6.0 была заморожена на стадии альфа-тестирования. Первоначально было принято решение о создании версии 5.2, вскоре эта версия была переименована в 6.0. Однако позже информация о MySQL 6.0 исчезла с сайта, а разработчики сосредоточились на версии 5.5 и следующей за ней версии 5.6.
Одним из основных нововведений версии 6.0 планировался новый тип таблиц , разработанный в качестве потенциальной замены для InnoDB компании Innobase , приобретённой компанией Oracle . В связи с приобретением в 2010 году Sun Microsystems тем же Oracle , судьба Falcon остаётся под вопросом.
Первая версия ветки MySQL 5.7.1 анонсирована 23 апреля 2013. Версия MySQL 5.7.8 адаптирована для Debian 8 и Ubuntu 15.04. Последний релиз — 5.7.32 от 19.10.2020.
Версия 8.0.0 была выпущена 12.09.2016, но официально пригодной к повсеместному использованию была версия 8.0.11, выпущенная 19.04.2018. Последняя версия — 8.0.33 (релиз от 18.04.2023)
Максимальный размер таблиц в MySQL 3.22 — до 4 гигабайт, в последующих версиях ограничений нет.
Размер таблицы ограничен её типом. В общем случае тип MyISAM ограничен предельным размером файла в файловой системе операционной системы. Например, в NTFS этот размер теоретически может быть до 32 эксабайт . В случае InnoDB одна таблица может храниться в нескольких файлах, представляющих единое табличное пространство . Размер последнего может достигать 64 терабайт .
В отличие от
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 не позволяет корректно применять регулярные выражения (операторы REGEXP и RLIKE) на строках в многобайтовых кодировках, например, для Юникода (UTF-8) . При необходимости таких операций приходится переходить на однобайтовые кодировки, например русскую Win-1251 или KOI-8 .