# Übersicht

Was er nicht ist

Der MySQL Native Driver wurde zwar als PHP-Erweiterung geschrieben, stellt dem PHP-Programmierer aber keine neue API zur Verfügung. Die Programmierer-APIs für die Verbindung zu MySQL-Datenbanken werden von den MySQL-Erweiterungen `mysqli` und PDO MYSQL bereitgestellt. Diese Erweiterungen können nun die Dienste des MySQL Native Drivers nutzen, um mit dem MySQL-Server zu kommunizieren. Daher sollte der MySQL Native Driver nicht als API betrachtet werden.

Warum sollte er verwendet werden?

Der MySQL Native Driver bietet gegenüber der MySQL Client Library eine Reihe von Vorteilen.

Die ältere MySQL Client Library wurde von MySQL AB (jetzt Oracle Corporation) geschrieben und daher unter der MySQL-Lizenz veröffentlicht. Dies führte letztendlich dazu, dass die MySQL-Unterstützung in PHP standardmäßig deaktiviert war. Der MySQL Native Driver hingegen wurde als Teil des PHP-Projekts entwickelt und wird daher unter der PHP-Lizenz veröffentlicht. Damit sind die Lizenzierungsprobleme, die es in der Vergangenheit gab, beseitigt.

Außerdem mussten die MySQL-Datenbankerweiterungen in der Vergangenheit mit einer Kopie der MySQL Client Library erstellt werden. Das bedeutete in der Regel, dass MySQL auf dem Rechner, auf dem der PHP-Quellcode erstellt wurde, installiert sein musste. Darüber hinaus riefen die MySQL-Datenbankerweiterungen die Datei der MySQL Client Library zur Laufzeit der PHP-Anwendungen auf, so dass die Datei auf dem System installiert sein musste. Mit dem MySQL Native Driver ist das nicht mehr der Fall, weil er in der Standarddistribution enthalten ist. Es ist also nicht erforderlich, MySQL zu installieren, um PHP zu entwickeln oder PHP-Datenbankanwendungen auszuführen.

Da der MySQL Native Driver als PHP-Erweiterung geschrieben wurde, ist er eng an die Funktionsweise von PHP gekoppelt. Dies führt insbesondere bei der Speichernutzung zu einer höheren Effizienz, weil der Treiber das Speicherverwaltungssystem von PHP nutzt. Außerdem unterstützt er das PHP-Speicherlimit. Mit dem MySQL Native Driver wird eine vergleichbare oder sogar bessere Leistung erzielt als mit der MySQL Client Library, da er stets die effizienteste Nutzung des Speichers gewährleistet. Ein Beispiel für die Speichereffizienz ist die Tatsache, dass bei Verwendung der MySQL Client Library jede Zeile zweimal im Speicher abgelegt wird, während beim MySQL Native Driver jede Zeile nur einmal im Speicher abgelegt wird.

> Hinweis: Überwachen der Speichernutzung
> Aufgrund der Tatsache, dass der MySQL Native Driver die Speicherverwaltung von PHP verwendet, kann seine Speichernutzung mit memory_get_usage() verfolgt werden. Dies ist mit libmysqlclient nicht möglich, weil es stattdessen die C-Funktion malloc() verwendet.

Besondere Fähigkeiten

Der native MySQL-Treiber bietet auch einige besondere Funktionalitäten, die nicht verfügbar sind, wenn die MySQL-Datenbankerweiterungen die MySQL Client Library verwenden. Diese besonderen Funktionalitäten sind unten aufgeführt:

- Verbesserte persistente (dauerhafte) Verbindungen
- Die spezielle Funktion mysqli_fetch_all()
- Aufrufe für Leistungsstatistiken: mysqli_get_client_stats(), mysqli_get_connection_stats()

Mit Hilfe der Leistungsstatistiken können Leistungsengpässe sehr gut erkannt werden.

In Verbindung mit der Erweiterung `mysqli` ermöglicht der MySQL Native Driver auch persistente Verbindungen.

SSL-Unterstützung

Der MySQL Native Driver unterstützt SSL.

Unterstützung komprimierter Protokolle

Der MySQL Native Driver unterstützt das komprimierte Client-Server-Protokoll. Wenn die Erweiterung `ext/mysqli` so konfiguriert ist, dass sie den MySQL Native Driver verwendet, kann sie dieses Feature ebenfalls nutzen. Es ist zu beachten, dass `PDO_MYSQL` die Komprimierung in Verbindung mit mysqlnd NICHT unterstützt.

Unterstützung für benannte Pipes

In Windows-Umgebungen können benannte Pipes für Verbindungen verwendet werden.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open