Le pilote natif MySQL est un substitut à la bibliothèque cliente MySQL (libmysql). Le pilote natif MySQL fait partie des branches officielles depuis PHP 5.3.
Les extensions de base de données MySQL mysqli et PDO MYSQL communiquent toutes avec le serveur MySQL. Auparavant, les extensions utilisaient les services de la bibliothèque cliente MySQL et étaient compilées par rapport à elle pour utiliser son protocole client-serveur.
Avec le pilote natif MySQL, il y a maintenant une alternative car les extensions de base de données MySQL peuvent être compilées pour utiliser le pilote natif MySQL plutôt que la bibliothèque cliente MySQL.
Le pilote natif MySQL est écrit en C comme une extensions PHP.
Ce que ce n'est pas
Bien que le pilote natif MySQL soit écrit comme une extension PHP, il est important de noter qu'il ne fournit pas une nouvelle API au programmeur PHP. Les API programmeur sont fournies par l'extension MySQL, mysqli et PDO MySQL. Ces extensions peuvent maintenant utiliser les services du pilote natif MySQL pour communiquer avec le serveur MySQL. Ainsi, vous ne devez pas considérer le pilote natif MySQL comme une API.
Pourquoi l'utiliser?
Utiliser le pilote natif MySQL offre bon nombre d'avantages par rapport à la bibliothèque MySQL cliente.
L'ancienne bibliothèque MySQL cliente a été écrite par MySQL AB (maintenant partie de Sun Microsystems, Inc.) et a donc été publiée sous licence MySQL, ce qui a eu pour conséquence de désactiver le support de MySQL par défaut dans PHP? Vu que le pilote natif MySQL a été développé comme partie intégrante du projet PHP, il est publié sous licence PHP, ce qui résout les soucis de licence problématique dans le passé.
De plus, auparavant, vous deviez compiler les extensions de base de données MySQL par rapport à une copie de la bibliothèque MySQL cliente, ce qui signifie que vous deviez avoir MySQL d'installé sur la machine sur laquelle vous compiliez PHP à partir des sources. Ainsi, quand votre application PHP était exécutée, les extensions MySQL appelaient les fichier de la bibliothèque MySQL cliente au démarrage, ceux-ci devant être obligatoirement installés sur le système. Avec le pilote natif MySQL, ce n'est plus le cas car il est inclus dans la distribution standard. Ainsi, vous n'aurez plus besoin d'avoir MySQL installé pour compiler PHP ou exécuter des applications PHP faisant appel à une base de données.
Du fait que le pilote natif MySQL soit écrit comme une extension PHP, il est intimement lié au coeur de PHP. Ceci implique une meilleure efficacité, notamment en ce qui concerne l'utilisation de la mémoire, car le pilote utilise l'allocation mémoire de PHP et par conséquent supporte les limites de mémoire. Utiliser le pilote natif MySQL aboutit à des performances égales sinon meilleurs qu'avec la bibliothèque cliente MySQL, car l'utilisation de la mémoire est beaucoup plus efficace. Le fait que lors de l'utilisation de la bibliothèque cliente MySQL, chaque enregistrement est stockée deux fois en mémoire alors que le client natif MySQL ne les stocké qu'une fois constitue un bon exemple de bonne gestion de la mémoire.
Fonctionnalités spéciales
Le pilote natif MySQL fournit aussi quelques fonctionnalités spéciales non disponibles avec la bibliothèque cliente MySQL, listées ci-dessous :
Des connexions persistantes améliorées
La fonction spéciale mysqli_fetch_all()
Des appels aux statistiques de performance : mysqli_get_cache_stats(), mysqli_get_client_stats(), mysqli_get_connection_stats()
Les statistiques de performances peuvent s'avérer très utiles pour identifier des goulets d'étranglement de performances.
Le pilote natif MySQL fournit aussi des connexions persistantes lors de son utilisation avec l'extension mysqli.
Le support de SSL
A ce jour, le pilote natif MySQL ne supporte pas SSL. Ainsi, la fonction mysqli_ssl_set() générera une erreur si elle est appelée avec le pilote natif MySQL.
Le support du protocole compressé
Depuis PHP 5.3.2, le pilote natif MySQL supporte le protocole client/serveur MySQL compressé. Il ne le supportait pas en PHP 5.3.0 ou 5.3.1. Les extensions telles que ext/mysql, ext/mysqli, PDO_MYSQL, configurées pour utiliser le pilote natif MySQL peuvent ainsi tirer parti de ce protocole.