MySQL
MySQL — это свободная реляционная система управления базами данных для малых и средних приложений. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в. автономные программы.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц:
- пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск,
- так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей.
Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
Доступные платформы для MySQL
MySQL портирована на большое количество платформ: AIX, BSDi, FreeBSD, HP-UX, Linux, Mac OS X, 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
MySQL имеет API для языков Delphi, C, C++, Эйфель, Java, Лисп, Perl, PHP, Python, Ruby, Smalltalk, Компонентный Паскаль и Tcl, библиотеки для языков платформы .NET, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC — драйвер ODBC (2.50) уровня 0 (с некоторыми возможностями уровней 1 и 2) для подсоединения совместимого с ODBC приложения к MySQL. MyODBC работает на всех системах Microsoft Windows и на большинстве платформ Unix.
Внутренние характеристики и переносимость
- Написан на C и C++. Протестирован на множестве различных компиляторов.
- Работает на различных платформах.
- Для обеспечения переносимости используется GNU Automake, Autoconf и Libtool.
- API для C, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tcl.
- Полностью многопоточный с использованием потоков ядра. Это означает, что, если такая возможность обеспечивается, можно легко организовать работу с несколькими процессорами.
- Очень быстрые дисковые таблицы на основе В-деревьев со сжатием индексов.
- Очень быстрая базирующаяся на потоках система распределения памяти.
- Очень быстрые соединения, использующие оптимизированный метод однопроходного мультисоединения (one-sweep multi-join).
- Хеш-таблицы в памяти, используемые как временные таблицы.
- SQL-функции реализованы при помощи хорошо оптимизированной библиотеки классов, поэтому они выполняются настолько быстро, насколько это возможно. Обычно после инициализации запроса распределения памяти не происходит вообще.
- MySQL- код протестирован с использованием Purify (коммерческий детектор утечки памяти), а также Valgrind, одного из GPL-инструментов.
Типы столбцов в базах MySQL
- Большое количество: целочисленные со знаком/беззнаковые, длиной в 1, 2, 3, 4 и 8 байтов,
FLOAT
,DOUBLE
,CHAR
,VARCHAR
,TEXT
,BLOB
,,
TIME
,DATETIME
,TIMESTAMP
,YEAR
,SET
иENUM
. - С записями фиксированной и переменной длины.
- Все столбцы имеют значения по умолчанию. С помощью
INSERT
можно вставить подмножество столбцов таблицы; столбцы, для которых явно не заданы значения, устанавливаются в значения по умолчанию.
Команды и функции MySQL
- Полная поддержка операторов и функций в
SEL ECT-
иWHERE-
частях запросов. Например:mysql> SELECT CONCAT(first_name, " «, last_name) -> FR OM tbl_name -> WHERE income/dependents > 10000 AND age > 30;
- Полная поддержка для операторов
SQL GROUP BY
иORDER BY
с выражениями SQL. Поддержка групповых функций(COUNT(), COUNT(DISTINCT…), AVG(), STD(), SUM(), MAX() и MIN())
. - Поддержка
LEFT OUTER JOIN
иRIGHT OUTER JOIN
с синтаксисом ANSI SQL и ODBC. - Разрешены псевдонимы для таблиц и столбцов в соответствии со стандартом SQL92.
DELETE
,INSERT
,REPLACE
, иUPDATE
возвращают число строк, которые были изменены. Вместо этого можно задать возвращение совпавших строк. Для этого следует установить флаг при соединении с сервером.- Команду
SHOW
, которая является специфической для MySQL, можно использовать для получения информации о базах данных, таблицах и индексах. Чтобы выяснить, как оптимизатор выполняет запрос, можно применять командуEXPLAIN
. - Имена функций не конфликтуют с именами таблиц и столбцов. Например, ABS является корректным именем столбца. Для вызова функции существует только одно ограничение: между именем функции и следующей за ним открывающей скобкой '(' не должно быть пробелов.
- В одном и том же запросе могут указываться таблицы из различных баз данных (с версии 3.22).
Безопасность в MySQL
- Система, основанная на привилегиях и паролях, за счет чего обеспечивается гибкость и безопасность, и с возможностью верификации с удаленного компьютера. Пароли защищены, т. к. они при передаче по сети при соединении с сервером шифруются.
Масштабируемость и ограничения
- Управляет очень большими базами данных. Компания MySQL AB. использует MySQL для работы с несколькими базами данных, которые содержат 50 миллионов записей, кроме того, нам известны пользователи, использующие MySQL для работы с 60000 таблицами, включающими около 5000000000 строк.
- Для каждой таблицы разрешается иметь до 32 индексов. Каждый индекс может содержать от 1 до 16 столбцов или частей столбцов. Максимальная ширина индекса 500 бит (это значение может быть изменено при компиляции MySQL). Для индекса может использоваться префикс поля
CHAR
илиVARCHAR
.
Установка соединений
- Клиенты могут соединяться с MySQL, используя сокеты TCP/IP, сокеты Unix или именованные каналы (named pipes, под NT).
- Поддержка ODBC (Open-DataBase-Connectivity) для Win32 (с исходным кодом). Все функции ODBC 2.5 и многие другие. Например, для соединения с MySQL можно использовать MS Access.
Локализация MySQL
- Сервер может обеспечивать сообщения об ошибках для клиентов на различных языках.
- Полная поддержка нескольких различных кодировок, включая ISO-8859-1 (Latin1), немецкий, big5, ujis и многие другие. Например, скандинавские символы разрешены в именах таблиц и столбцов.
- Для хранения всех данных используется выбранный набор символов. Все сравнения для столбцов с нормальными строками проводятся с учетом регистра символов.
- Сортировка производится согласно выбранному алфавиту (по умолчанию используется шведский). Эту установку можно изменить при запуске сервера MySQL. Чтобы ознакомиться с примером очень грамотной сортировки, можно обратиться к коду сортировки для чешского языка. MySQL поддерживает много различных кодировок, которые можно задавать во время компиляции и в процессе работы.
Клиенты и инструментарий MySQL
- Включает myisamchk, очень быструю утилиту для проверки, оптимизации и восстановления таблиц. Все функциональные возможности myisamchk также доступны через SQL-интерфейс.
- Все MySQL-программы можно запускать с опциями
-help
или-?
для получения помощи.