Для обеспечения переносимости используется GNU Automake,
Autoconf и Libtool.
API для C, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tcl.
See section 8 Интерфейсы для MySQL.
Полностью многопоточный с использованием потоков ядра. Это означает,
что, если такая возможность обеспечивается, можно легко организовать
работу с несколькими процессорами.
Очень быстрые дисковые таблицы на основе В-деревьев со сжатием
индексов.
Очень быстрая базирующаяся на потоках система распределения памяти.
Очень быстрые соединения, использующие оптимизированный метод
однопроходного мультисоединения (one-sweep multi-join).
Хеш-таблицы в памяти, используемые как временные таблицы.
SQL-функции реализованы при помощи хорошо оптимизированной библиотеки
классов, поэтому они выполняются настолько быстро, насколько это
возможно. Обычно после инициализации запроса распределения памяти не
происходит вообще.
MySQL- код протестирован с использованием Purify (коммерческий
детектор утечки памяти), а также Valgrind, одного из GPL-инструментов
(http://developer.kde.org/~sewardj/
Типы столбцов
Большое количество: целочисленные со знаком/беззнаковые, длиной в 1, 2, 3, 4 и
8 байтов, FLOAT, DOUBLE, CHAR, VARCHAR,
TEXT, BLOB, DATE, TIME, DATETIME,
TIMESTAMP, YEAR, SET и ENUM. See section 6.2 Типы данных столбцов.
С записями фиксированной и переменной длины.
Все столбцы имеют значения по умолчанию. С помощью INSERT можно
вставить подмножество столбцов таблицы; столбцы, для которых явно не
заданы значения, устанавливаются в значения по умолчанию.
Команды и функции
Полная поддержка операторов и функций в SELECT- и WHERE- частях
запросов. Например:
mysql> SELECT CONCAT(first_name, " ", last_name)
-> FROM 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, and UPDATE возвращают число строк, которые
были изменены. Вместо этого можно задать возвращение совпавших строк.
Для этого следует установить флаг при соединении с сервером.
Команду SHOW, которая является специфической для MySQL, можно
использовать для получения информации о базах данных, таблицах и
индексах. Чтобы выяснить, как оптимизатор выполняет запрос, можно
применять команду EXPLAIN.
Имена функций не конфликтуют с именами таблиц и столбцов. Например,
ABS является корректным именем столбца. Для вызова функции существует
только одно ограничение: между именем функции и следующей за ним
открывающей скобкой `(' не должно быть пробелов. See section 6.1.6 ``Придирчив'' ли MySQL к зарезервированным словам?.
В одном и том же запросе могут указываться таблицы из различных баз
данных (с версии 3.22).
Безопасность
Система, основанная на привилегиях и паролях, за счет чего
обеспечивается гибкость и безопасность, и с возможностью верификации с
удаленного компьютера. Пароли защищены, т.к. они при передаче по сети
при соединении с сервером шифруются.
Масштабируемость и ограничения
Управляет очень большими базами данных. Компания 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. See section 8.3 Поддержка ODBC в MySQL.
Полная поддержка нескольких различных кодировок, включая ISO-8859-1
(Latin1), немецкий, big5, ujis и многие другие. Например,
скандинавские символы разрешены в именах таблиц и столбцов.
Для хранения всех данных используется выбранный набор символов. Все
сравнения для столбцов с нормальными строками проводятся с учетом
регистра символов.
Сортировка производится согласно выбранному алфавиту (по умолчанию
используется шведский). Эту установку можно изменить при запуске
сервера MySQL. Чтобы ознакомиться с примером очень грамотной
сортировки, можно обратиться к коду сортировки для чешского языка.
MySQL поддерживает много различных кодировок, которые можно задавать
во время компиляции и в процессе работы.
Клиенты и инструментарий
Включает myisamchk, очень быструю утилиту для проверки, оптимизации и
восстановления таблиц. Все функциональные возможности myisamchk также
доступны через SQL-интерфейс. See section 4 Администрирование баз данных.
Все MySQL-программы можно запускать с опциями --help или -? для
получения помощи.