Насколько стабильным является MySQL?


Этот раздел дает ответ на следующие вопросы ''Насколько стабильным является MySQL?'' и ''Могу ли я положиться на MySQL в своем проекте?'' Мы попытаемся внести ясность в эти проблемы, а также ответить на некоторые важные вопросы, которые имеют значение для многих потенциальных пользователей. Информация данного раздела базируется на данных из списка рассылки, - наши пользователи очень активно сообщают нам о выявленных проблемах и о своем опыте использования нашего ПО.

Самые первые версии кода были созданы в начале 80-х. Это был устойчивый код с форматом таблиц ISAM, обеспечивающим обратную совместимость с предыдущими версиями. Во времена компании TcX, предшественника MySQL AB, с середины 1986 года код MySQL работал в проектах без каких-либо проблем. Но когда сервер MySQL был выпущен для широкого использования, оказалось, что существует несколько фрагментов «непротестированного кода». Эти фрагменты были быстро обнаружены новыми пользователями, которые составляли запросы в несколько ином виде, чем мы.

С каждым новым релизом количество проблем, связанных с переносимостью, уменьшалось (несмотря на то, что в каждом выпуске появлялось множество новых возможностей).

Каждый релиз MySQL был рабочим, проблемы возникали только при использовании кода из «серых зон». Естественно, что новые пользователи не знают о том, где находятся такие «серые зоны»; в данном разделе сделана попытка описать те из них, которые известны на данный момент. Большая часть описания относится к версии 3.23 MySQL-сервера. В самой последней версии все известные ошибки устранены, за исключением тех, которые перечислены в разделе ошибок, а также конструктивных дефектов. Известные ошибки и недостатки проектирования в 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-драйвера или сервера баз данных.

  • Автоматическое восстановление MyISAM-таблиц - Gamma

    Статус Gamma относится только к новому коду в обработчике таблиц, который проверяет правильность закрытия таблицы после ее открытия и выполняет автоматическую проверку/восстановление незакрытой таблицы.

  • Вставка больших объемов данных - Alpha

    Новая возможность в MyISAM-таблицах в MySQL 4.0 для быстрой вставки большого количества строк.

  • Блокировка - Gamma

    В большой степени зависит от системы. В некоторых системах возникают большие проблемы с использованием стандартной для ОС блокировки (fcntl()). В таких случаях следует запустить демон mysqld с флагом --skip-external-locking. Известно, что проблемы имеют место в некоторых системах Linux и в SunOS, когда используются NFS-монтированные файловые системы.

Несмотря на то, что высококвалифицированную поддержку MySQL AB обеспечивает за плату, в списке рассылки MySQL обычно можно получить ответы на часто возникающие вопросы. Ошибки обычно ликвидируются сразу же при помощи патчей, а серьезные дефекты почти всегда устраняются в новом выпуске.