MySQL
Материал из Википедии — свободной энциклопедии
| MySQL | |
|
Логотип MySQL
|
|
| Тип | Реляционная СУБД |
| Разработчик | MySQL AB |
| Написана на | C, C++ |
| ОС | Кроссплатформенное программное обеспечение |
| Версия | 4.1.25 / 5.0.83 / 5.1.36 — 1 декабря 2008 / 12 июня 2009 / 1 июля 2009 |
| Тестовая версия | 6.0.11 — 22 мая 2009 |
| Лицензия | GNU General Public License, Коммерческая лицензия |
| Сайт | www.mysql.com |
MySQL (официально произносится /mɑɪ ɛs kjuː ɛl/, сленг. «май-эс-кью-эль», сленг. «мускул»)[1] — свободная система управления базами данных (СУБД). MySQL является собственностью компании Sun Microsystems, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор. Помимо этого компания MySQL AB разрабатывает функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
MySQL является решением для малых и средних приложений. Входит в LAMP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
26 февраля 2008 года Sun Microsystems приобрела MySQL AB за $1 млрд.[2].
Содержание |
[править] О происхождении MySQL
MySQL возникла как попытка применить mSQL к собственным разработкам компании: таблицам, для которых использовались ISAM — подпрограммы низкого уровня. В результате был выработан новый SQL-интерфейс, но API-интерфейс остался в наследство от mSQL. Откуда происходит название «MySQL» — доподлинно не известно. Разработчики дают два варианта: либо потому, что практически все наработки компании начинались с префикса My, либо в честь девочки по имени My, дочери Майкла Монти Видениуса, одного из разработчиков системы.[3][4]
Логотип MySQL в виде дельфина носит имя «Sakila». Он был выбран из большого списка предложенных пользователями «имён дельфина». Имя «Sakila» было отправлено Open Source-разработчиком Ambrose Twebaze.
[править] Лицензирование
MySQL имеет двойное лицензирование. MySQL может распространяться в соответствии с условиями лицензии GPL. Однако по условиям GPL, если какая-либо программа включает исходные коды MySQL, то она тоже должна распространяться по лицензии GPL. Это может расходиться с планами разработчиков, не желающих открывать исходные тексты своих программ. Для таких случаев предусмотрена коммерческая лицензия компании MySQL AB, которая также обеспечивает качественную сервисную поддержку.
[править] Платформы
MySQL портирована на большое количество платформ: AIX, BSDi, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003 и Windows Vista. Существует также порт MySQL к OpenVMS. Важно отметить, что компания MySQL AB предоставляет для свободной загрузки не только исходные коды СУБД, но и откомпилированные и оптимизированные под конкретные операционные системы готовые исполняемые модули, которые можно загрузить с зеркал, представленных на официальном сайте.
[править] Языки программирования
MySQL имеет API для языков Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk и Tcl, библиотеки для языков платформы .NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.
[править] История выпусков
- Первый внутренний выпуск MySQL состоялся 23 мая 1995 года;
- Версия для 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;
- Версия 6.0: в разработке.
[править] MySQL 4.0
Несмотря на то, что версия 4.0 является устаревшей, она всё ещё имеет значительное распространение. Основные возможности этой версии:
- Практически полная реализация ANSI SQL-99, плюс расширения;
- Межплатформенная совместимость;
- Независимые типы таблиц (MyISAM для быстрого чтения, InnoDB для транзакций и ссылочной целостности);
- Транзакции;
- Поддержка SSL;
- Кеширование запросов;
- Репликация: один головной сервер на одного подчинённого, много подчинённых на одного головного;
- Полнотекстовая индексация и поиск с использованием типа таблиц MyISAM;
- Внедрённая библиотека базы данных;
- Поддержка Юникода (UTF-8);
- Таблицы InnoDB обеспечивают соответствие требованиям ACID;
- Встроенный сервер, позволяющий включать MySQL в автономные приложения.
[править] MySQL 4.1
Рекомендованной версией на 2005 год является MySQL 4.1 вышла 27 октября 2004. Она содержит следующие нововведения:
- Вложенные запросы и производные таблицы;
- Новая система кодировок и сортировок;
- Более быстрый и гибкий протокол клиент-сервер с поддержкой подготовленных запросов, обеспечивающий их оптимальное исполнение;
- Новая программа установки и настройки для Microsoft Windows и GNU/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 содержит следующие нововведения [5] [6]:
- сегментирование — возможность разбить одну большую таблицу на несколько частей, размещенных в разных файловых системах, основываясь на определенной пользователем функции. При определенных условиях это может дать серьезное увеличение производительности и, кроме того, облегчает масштабирование таблиц.
- изменено поведение ряда операторов, для обеспечения большей совместимости со стандартом SQL2003;
- построчная репликация (row-based репликация), при которой в бинарный лог будет записываться только информация о реально измененных строках таблицы вместо оригинального (и, возможно, медленного) текста запроса. Построчную репликацию можно использовать только для определенных типов sql-запросов, в терминах MySQL - смешанная (mixed) репликация;
- встроенный планировщик периодически запускаемых работ. По синтаксису добавление задачи похоже на добавление триггера к таблице, по идеологии - на 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, - новый MySQL тип таблиц для хранения данных. Maria представляет собой расширенную версию хранилища MyISAM, с добавлением средств сохранения целостности данных после краха.
Основные достоинства Maria [7]
- В случае краха производится откат результатов выполнения текущей операции или возврат в состояние до команды LOCK TABLES. Реализация через ведение лога операций;
- Возможность восстановления состояния из любой точки в логе операций, включая поддержку CREATE/DROP/RENAME/TRUNCATE. Может быть использовано для создания инкрементальных бэкапов, через периодическое копирование лог файла.
- Поддержка всех форматов столбцов MyISAM, расширена новым форматом "rows-in-block", использующим страничный способ хранения данных, при котором данные в столбцах могут кэшироваться;
- В будущем будет реализовано два режима: транзакционный и без отражения в логе транзакций, для не критичных данных.
- Размер страницы данных равен 8Кб (в MyISAM 1Кб), что позволяет достичь более высокой производительности для индексов по полям фиксированного размера, но медленнее в случае индексирования ключей переменной длинны.
[править] MySQL 6.0
Версия MySQL 6.0 пока находится в стадии альфа-тестирования. Первоначально было принято решение о создании версии 5.2, однако вскоре эта версия была переименована в 6.0.
Одно из основных нововведений версии 6.0 — новый тип таблиц Falcon, разработанный компанией MySQL AB, в качестве потенциальной замены для InnoDB компании InnoBase, приобретённой компанией Oracle. Полный список изменений можно увидеть на официальном сайте[8].
[править] Технические Характеристики
[править] Максимальные размеры таблиц
MySQL 3.22 : до 4 Гб
MySQL 3.23+ : До 8 миллионов терабайт. (2 ^ 63)
При этом необходимо учитывать тот факт, что размер таблицы в новых версиях ограничен лишь предельным размером файла в файловой системе вашей ОС. Например в NTFS этот размер теоретически может быть до 32 эксабайт.
[править] Локализация
Начиная с версии 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 'utf8'
Кодировка ISO 8859-5 не поддерживается.
[править] Примечания
- ↑ 1.4.1. What is MySQL? (англ.). MySQL 5.1 Reference Manual. MySQL AB. Проверено 21 ноября 2007.
- ↑ http://blogs.mysql.com/kaj/2008/01/16/sun-acquires-mysql/
- ↑ MySQL. Руководство администратора = MySQL. Administrator's Guide. — М.: Издательский дом «Вильямс», 2005. — С. 624. — ISBN 5-8459-0805-1
- ↑ История MySQL (англ.)
- ↑ Нововведения MySQL 5.1
- ↑ Обзор новшеств MySQL 5.1 на русском языке
- ↑ Обзор возможностей хранилища Maria на opennet.ru
- ↑ Нововведения MySQL 6.0
[править] См. также
| В Википедии есть портал «Свободное программное обеспечение» |
[править] Ссылки
- Официальный сайт(англ.)
- Русский сайт по MySQL
- Документация на сайте разработчиков MySQL
- Раздел MySQL на форумах SQL.ru
- Форум, поддерживаемый авторами нескольких книг по MySQL
- Русскоязычное ЖЖ-сообщество ru_mysql
- FAQ, о путанице MySQL кодировок (4.1, 5.x и пр.)
- MySQL Блоги о MySQL(англ.)
- Авторизованные курсы MySQL (рус.)
- Установка и настройка MySQL под Windows (пошаговая иллюстрированная инструкция)
[править] Литература
| MySQL на Викискладе? |
- Роберт Шелдон, Джоффрей Мойе MySQL: базовый курс = Beginning MySQL. — М.: «Диалектика», 2007. — С. 880. — ISBN 0-7645-7950-9
- Кузнецов Максим, Симдянов Игорь MySQL на примерах. — Спб.: «БХВ-Петербург», 2007. — С. 952. — ISBN 978-5-9775-0066-1
- Поль Дюбуа MySQL = MySQL. — 3-е изд. — М.: «Вильямс», 2006. — С. 1168. — ISBN 0-672-32673-6
- Зак Гринт, Крис Ньюман MySQL. Карманный справочник = MySQL Phrasebook. — М.: «Вильямс», 2006. — С. 224. — ISBN 0-672-32839-9
- Кузнецов Максим, Симдянов Игорь MySQL 5. В подлиннике. — Спб.: «БХВ-Петербург», 2006. — С. 1024. — ISBN 5-94157-928-4
- Кузнецов Максим, Симдянов Игорь Самоучитель MySQL 5. — Спб.: «БХВ-Петербург», 2006. — С. 560. — ISBN 5-94157-754-0
|
|
|
|---|---|
| Серверные |
Caché • DB2 • Firebird • Informix • Ingres • InterBase • MSDE • MS SQL Server • MySQL • Oracle • Pervasive SQL • PostgreSQL • Sybase ASE • Sybase ASA • Sybase IQ • ЛИНТЕР |
| Движки | |
| Клиентские |
DataFlex • dBase • MS Access • OpenOffice.org Base • Paradox • Sav Zigzag |

