Обзор

Чем он не является

Хотя встроенный драйвер MySQL написан как модуль PHP, важно понимать, что он не предоставляет программисту PHP нового API. API к базе данных MySQL для программиста предоставляются модулями MySQL, mysqli и PDO MYSQL. Эти модули могут использовать возможности встроенного драйвера MySQL для общения с сервером MySQL. Таким образом, вы не должны думать о встроенном драйвере MySQL как об API.

Зачем его использовать?

Использование встроенного драйвера MySQL дает некоторые плюсы относительно клиентской библиотеки MySQL.

Более старая клиентская библиотека MySQL была написана MySQL AB (сейчас Oracle Corporation) и выпускалась под лицензией MySQL. В конечном итоге это привело к тому, что поддержка MySQL в PHP была по умолчанию выключена. С другой стороны, встроенный драйвер MySQL был разработан как часть проекта PHP, и выпущен под лицензией PHP. Это снимает вопросы с лицензированием, бывшие проблемными в прошлом.

Также, в прошлом вам требовалось собирать модули, работающие с базой данных MySQL, рядом с клиентской библиотекой MySQL. Обычно это означало, что на машине, на которой вы разрабатывали PHP-код, требовался установленный MySQL. К тому же, когда PHP-приложение работало, модули, работающие с MySQL, могли обращаться к клиентской библиотеке MySQL во время работы, так что ее файл должен был быть установлен в вашей системе. Со встроенным драйвером MySQL эта проблема исчезла, поскольку он является частью стандартного дистрибутива. Таким образом, вам не потребуется установленный MySQL, чтобы собирать PHP или использовать работающие с базой данных PHP-приложения.

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

Замечание: Контроль использования памяти

Так как встроенный драйвер MySQL использует систему контроля памяти PHP, используемая им память может быть отслежена с помощью функции memory_get_usage(). Это нельзя сделать с помощью libmysqlclient, так как он использует функцию языка Си malloc().

Особые возможности

Встроенный драйвер MySQL также предоставляет некоторые особые возможности, недоступные при использовании расширениями клиентской библиотеки MySQL. Список этих возможностей приведен ниже:

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

Встроенный драйвер MySQL также поддерживает постоянные соединения при использовании модуля mysqli.

Поддержка SSL

Встроенный драйвер MySQL поддерживает SSL с версии PHP 5.3.3

Поддержка протокола с использованием сжатия

Начиная с PHP 5.3.2, встроенный драйвер MySQL поддерживает клиент-серверный протокол с использованием сжатия. Этой поддержки нет в версиях 5.3.0 и 5.3.1. Модули, например, ext/mysql или ext/mysqli, настроенные на использование встроенного драйвера MySQL, могут также воспользоваться этой возможностью. Обратите внимание, что PDO_MYSQL НЕ поддерживает сжатие при использовании совместно с mysqlnd.

Поддержка именованных каналов

Поддержка именованных каналов для Windows была добавлена в PHP версии 5.4.0.