Dutch PHP Conference 2026 - Call For Papers

Сравнение плагинов mysqlnd с MySQL Proxy

Плагины mysqlnd и приложение MySQL Proxy — разные технологии с разными подходами. Оба инструмента решают стандартные задачи наподобие балансировки нагрузки, мониторинга и улучшения производительности. Важное отличие состоит в том, что приложение MySQL Proxy работает со всеми MySQL-клиентами, тогда как плагины mysqlnd работают только с PHP-приложениями.

Как PHP-модуль, плагин mysqlnd устанавливается на сервер PHP-приложений вместе с остальными компонентами PHP-дистрибутива. MySQL Proxy запускают на сервере приложений PHP или устанавливают на отдельной машине для поддержки множественных серверов PHP-приложений.

Установка MySQL Proxy на сервере приложений даёт два преимущества:

  1. Отсутствие единой точки отказа

  2. Лёгкость в горизонтальном масштабировании и масштабировании за счёт клиента

Приложение MySQL Proxy и плагины mysqlnd легко решают проблемы, которые иначе потребовали бы изменений в текущих приложениях.

Тем не менее, MySQL Proxy содержит и ряд недостатков:

  • MySQL Proxy — новый элемент и технология, которую потребуется изучить и установить.

  • MySQL Proxy требует знания скриптового языка Lua.

Приложения MySQL Proxy настраиваются под конкретные задачи средствами языков C и Lua. Lua — предпочтительный скриптовый язык для MySQL Proxy. Для большей части PHP-экспертов Lua новый язык, который потребуется изучать. Плагин драйвера mysqlnd пишут на C или на PHP через модуль » PECL/mysqlnd_uh.

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

MySQL Proxy работает поверх сетевых протоколов. С помощью MySQL Proxy вы можете разобрать и подвергнуть инженерному анализу протокол MySQL Client Server. Что-либо поменять можно только манипулируя протоколом обмена. Если протокол вдруг поменяется (что бывает крайне редко), скрипты MySQL Proxy потребуется переписывать.

Плагины Mysqlnd работают поверх C API, который дублирует клиент libmysqlclient. Этот API-интерфейс языка C по сути обычная обёртка вокруг протокола MySQL Client Server. Вы можете перехватывать каждый вызов API-интерфейса C. PHP использует API-интерфейс C, фактически можно перехватывать вообще каждый вызов PHP, без программирования на уровне протокола обмена.

Mysqlnd реализует протокол обмена. Таким образом, плагины могут перехватывать, исследовать, менять и даже целиком заменять протокол связи. Хотя обычно ничего этого не требуется.

Плагины позволяют вам использовать два уровня (C API и протокол обмена), в этом они гораздо гибче, чем MySQL Proxy. Если плагин mysqlnd реализован с использованием C API, изменения протокола обмена не потребуют изменения плагина.

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top