Этот раздел дает ответ на следующие вопросы ''Насколько стабильным является MySQL?'' и ''Могу ли я положиться на MySQL в своем проекте?'' Мы попытаемся внести ясность в эти проблемы, а также ответить на некоторые важные вопросы, которые имеют значение для многих потенциальных пользователей. Информация данного раздела базируется на данных из списка рассылки, - наши пользователи очень активно сообщают нам о выявленных проблемах и о своем опыте использования нашего ПО.
Самые первые версии кода были созданы в начале 80-х. Это был устойчивый
код с форматом таблиц ISAM
, обеспечивающим обратную совместимость с
предыдущими версиями. Во времена компании TcX, предшественника MySQL AB, с
середины 1986 года код MySQL работал в проектах без каких-либо проблем. Но
когда сервер MySQL был выпущен для широкого использования, оказалось, что
существует несколько фрагментов ``непротестированного кода''. Эти
фрагменты были быстро обнаружены новыми пользователями, которые составляли
запросы в несколько ином виде, чем мы.
С каждым новым релизом количество проблем, связанных с переносимостью, уменьшалось (несмотря на то, что в каждом выпуске появлялось множество новых возможностей).
Каждый релиз MySQL был рабочим, проблемы возникали только при использовании кода из ``серых зон''. Естественно, что новые пользователи не знают о том, где находятся такие ``серые зоны''; в данном разделе сделана попытка описать те из них, которые известны на данный момент. Большая часть описания относится к версии 3.23 MySQL-сервера. В самой последней версии все известные ошибки устранены, за исключением тех, которые перечислены в разделе ошибок, а также конструктивных дефектов. See Раздел 1.9.5, «Известные ошибки и недостатки проектирования в MySQL».
Структура ПО MySQL является многоуровневой с независимыми модулями. Некоторые из новейших модулей перечислены ниже, причем по каждому дается информация о том, насколько хорошо он протестирован.
-
Репликация - Gamma
Большие серверные кластеры, в которых применяется репликация, находятся в промышленной эксплуатации и показывают хорошие результаты. Работа над средствами репликации в MySQL 4.x продолжается.
-
InnoDB
-таблицы - стабильно (в 3.23 с 3.23.49)Обработчик транзакционных
InnoDB
-таблиц объявлен в настоящее время стабильными в дереве MySQL 3.23, начиная с версии 3.23.49.InnoDB
используется в больших промышленных системах с большой нагрузкой. -
BDB
-таблицы - GammaКод
Berkeley DB
очень устойчив, но на настоящий момент продолжается усовершенствование интерфейса обработчика транзакционныхBDB
-таблиц с MySQL, поэтому должно пройти некоторое время, пока он будет так же хорошо протестирован, как и таблицы других типов. -
Полнотекстовый поиск
- BetaПолнотекстовый поиск работает, но широко не используется. В версии MySQL 4.0 реализованы существенные улучшения данной возможности.
-
MyODBC 2.50
(использующий ODBC SDK 2.5) - GammaЧрезвычайно широко используется. Как оказалось, некоторые из возникших проблем являются зависящими от приложения, а не от ODBC-драйвера или сервера баз данных.
-
Aвтоматическое восстановление
MyISAM
-таблиц - GammaСтатус Gamma относится только к новому коду в обработчике таблиц, который проверяет правильность закрытия таблицы после ее открытия и выполняет автоматическую проверку/восстановление незакрытой таблицы.
-
Вставка больших объемов данных - Alpha
Новая возможность в
MyISAM
-таблицах в MySQL 4.0 для быстрой вставки большого количества строк. -
Блокировка - Gamma
В большой степени зависит от системы. В некоторых системах возникают большие проблемы с использованием стандартной для ОС блокировки (
fcntl()
). В таких случаях следует запустить демонmysqld
с флагом--skip-external-locking
. Известно, что проблемы имеют место в некоторых системах Linux и в SunOS, когда используются NFS-монтированные файловые системы.
Несмотря на то, что высококвалифицированную поддержку MySQL AB обеспечивает за плату, в списке рассылки MySQL обычно можно получить ответы на часто возникающие вопросы. Ошибки обычно ликвидируются сразу же при помощи патчей, а серьезные дефекты почти всегда устраняются в новом выпуске.