Die Plugin-API des MySQL Native Drivers ist eine Komponente des MySQL Native
  Drivers, oder kurz mysqlnd. Die
  mysqlnd-Plugins arbeiten in der Schicht zwischen der
  PHP-Anwendung und dem MySQL-Server. Dies ist vergleichbar mit dem
  MySQL-Proxy. Der MySQL-Proxy arbeitet in einer Schicht zwischen einer
  beliebigen MySQL-Client-Anwendung, zum Beispiel einer PHP-Anwendung, und dem
  MySQL-Server. Mysqlnd-Plugins können typische
  MySQL-Proxy-Aufgaben wie Lastausgleich, Überwachung und Leistungsoptimierung
  übernehmen. Aufgrund der unterschiedlichen Architektur und des Standorts
  haben mysqlnd-Plugins einige der Nachteile von
  MySQL-Proxy nicht. So gibt es bei Plugins beispielsweise keinen Single Point
  of Failure (einzelnen Ausfallpunkt), keinen dedizierten Proxy-Server, der
  eingesetzt werden muss, und keine neue Programmiersprache, die erlernt
  werden muss (Lua).
 
  Ein mysqlnd-Plugin kann als eine Erweiterung von
  mysqlnd betrachtet werden. Die Plugins können die meisten
  der mysqlnd-Funktionen abfangen. Diese Funktionen werden
  von den PHP-MySQL-Erweiterungen wie ext/mysql,
  ext/mysqli und PDO_MYSQL aufgerufen.
  Daher ist es für ein mysqlnd-Plugin möglich, alle von
  einer Client-Anwendung an diese Erweiterungen gerichteten Aufrufe
  abzufangen.
 
  Auch Aufrufe von internen mysqlnd-Funktionen können
  abgefangen oder ersetzt werden. Es gibt keine Einschränkungen für die
  Bearbeitung von mysqlnd-internen Funktionstabellen. Es
  ist also möglich, das Ganze so zu konfigurieren, dass der Aufruf bestimmter
  mysqlnd-Funktionen durch eine Erweiterung, die
  mysqlnd verwendet, an die entsprechende Funktion im
  mysqlnd-Plugin geleitet wird. Die Möglichkeit, die
  internen Funktionstabellen von mysqlnd auf diese Weise zu
  manipulieren, bietet maximale Flexibilität für Plugins.
 
  Ein mysqlnd-Plugin ist im Grunde eine PHP-Erweiterung,
  die in C geschrieben ist und die Plugin-API von mysqlnd
  verwendet (die in den MySQL Native Driver mysqlnd
  integriert ist). Plugins können für PHP-Anwendungen 100% transparent gemacht
  werden. Es sind keine Änderungen an den Anwendungen erforderlich, da Plugins
  in einer anderen Schicht arbeiten. Das mysqlnd-Plugin
  kann man sich als eine Schicht unterhalb von mysqlnd
  vorstellen.
 
  Die folgende Liste enthält ein paar mögliche Anwendungen für
  mysqlnd-Plugins.
 
Load Balancing (Lastverteilung)
Trennung von Lese- und Schreibvorgängen. Ein Beispiel hierfür ist die Erweiterung PECL/mysqlnd_ms (Master Slave). Diese Erweiterung trennt Lese- und Schreibanfragen für eine Replikationskonfiguration.
Ausfallsicherung
Round-Robin, Übertragung auf den am wenigsten belasteten Server
Server-Überwachung
Abfrage-Protokollierung
Abfrage-Analyse
Abfrage-Überprüfung. Ein Beispiel hierfür ist die Erweiterung PECL/mysqlnd_sip (SQL Injection Protection). Diese Erweiterung prüft Abfragen und führt nur solche aus, die einem bestimmten Regelwerk entsprechen.
Leistung
Zwischenspeicherung. Ein Beispiel hierfür ist die Erweiterung PECL/mysqlnd_qc (Query Cache).
Drosselung
Sharding (Aufteilung). Ein Beispiel hierfür ist die Erweiterung PECL/mysqlnd_mc (Multi Connect). Diese Erweiterung versucht, eine SELECT-Anweisung in n Teile aufzuteilen, indem sie SELECT ... LIMIT part_1, SELECT LIMIT part_n verwendet. Sie sendet die Abfragen an verschiedene MySQL-Server und führt das Ergebnis auf dem Client zusammen.
Verfügbare Plugins für den MySQL Native Driver
Es gibt bereits eine Reihe von mysqlnd-Plugins. Dazu gehören:
PECL/mysqlnd_mc - Plugin für Mehrfachverbindungen (Multi Connect). plugin.
PECL/mysqlnd_ms - Plugin für die Master-Slave-Konfiguration.
PECL/mysqlnd_qc - Plugin für die Zwischenspeicherung von Abfragen (Query Cache). plugin.
PECL/mysqlnd_pscache - Plugin für die Zwischenspeicherung von Handles für vorbereitete Anweisungen (Prepared Statement Handle Cache).
PECL/mysqlnd_sip - Plug-in zum Schutz vor SQL-Injections.
PECL/mysqlnd_uh - Plugin für die Benutzerverwaltung (User Handler).
