# Información General

Lo que no es

Aunque el Controlador Nativo de MySQL está escrito como una extensión de PHP, es importanete observar que no proporciona una nueva API al programador de PHP. Las APIs de programador para conectividad de bases de datos MySQL están proporcionadas por las extensiones, `mysqli` y PDO MYSQL. Estas extensiones ahora pueden utilizar servicios del Controlador Nativo de MySQL para comunicarse con el Servidor MySQL. Por lo tanto, no se debería pensar en el Controlador Nativo de MySQL como una API.

¿Por qué usarlo?

El uso del Controlador Nativo de MySQL ofrece varias ventajas sobre el uso de la Biblioteca Cliente de MySQL.

La antigua Biblioteca Cliente de MySQL fue escrita por MySQL AB (ahora Oracle Corporation) y por lo tanto fue liberada bajo la licencia de MySQL. Esto, a la larga, condujo a que el soporte para MySQL fuera deshabilitado de forma predeterminada en PHP. Sin embargo, el Controlador Nativo de MySQL ha sido desarrollado como parte del proyecto de PHP, y, por lo tanto, es liberado bajo la licencia de PHP. Esto elimina las cuestiones sobre licencias que han sido problemáticas en el pasado.

También, en el pasado, se necesitaba construir las extensiones de bases de datos MySQL con una copia de la Biblioteca Cliente de MySQL. Esto, normalmente, significaba que se necesitaba tener instalado MySQL en una máquina donde se construyera el código fuente de PHP. También, cuando una aplicación de PHP era ejecutada, las extensiones de bases de datos de MySQL llamarían al fichero de la Biblioteca Cliente de MySQL en tiempo de ejecución, por lo que el fichero era necesario instalarlo en el sistema. Con el Controlador Nativo de MySQL ese ya no es el caso debido a que está incluido como parte de la distribución estándar. Así, no se necesita tener instalado MySQL para construir PHP o ejecutar aplicaciones de bases de datos de PHP.

Ya que el Controlador Nativo de MySQL está escrito como una extensión de PHP, está íntimamente asociado con el funcionamiento de PHP. Esto conduce a obtener ganancias en eficiencia, especialmente en lo que se refiere al uso de memeria, ya que el controlador utiliza el sistema de administración de memoria de PHP. También soporta el límite de memoria de PHP. El uso del Controlador Nativo de PHP conduce a un rendimiento comparable o mejor que el uso de la Biblioteca Cliente de MySQL; siempre se asegura del uso de memoria más eficiente. Un ejemplo de la eficiencia de memoria es el hecho de que cuando se usa la Biblioteca Cliente de MySQL, cada columna es almacenada en memoria dos veces, mientras que con el Controlador Nativo de MySQL cada columna solamente se almacena una vez en memoria.

> Nota: Informe del uso de memoria

> Ya que el Controlador Nativo de MySQL utiliza el sistema de administración de memoria de PHP, su uso de memoria se puede seguir con memory_get_usage(). Esto no es posible con libmysqlclient porque utiliza la función de C malloc() en su lugar.

Características especiales

El Controlador Nativo de MySQL también proporciona algunas características especiales no disponibles cuando las extensiones de bases de datos de MySQL utilizan la Biblioteca Cliente de MySQL. Estas características especiales están listadas abajo:

- Conexiones persistentes mejoradas

- La función especial mysqli_fetch_all()

- Llamadas para obtener estadísticas de rendimiento: mysqli_get_cache_stats(), mysqli_get_client_stats(), mysqli_get_connection_stats()

Se puede demostrar que la capacidad de obtener estadísticas de rendimiento es muy útil en la identificación de cuellos de botella de rendimiento.

El Controlador Nativo de MySQL también permite conexiones persistentes cuando se usa junto con la extensión `mysqli`.

Soporte para SSL

El Controlador Nativo de MySQL tiene soporte para SSL desde la versión 5.3.3 de PHP.

Soporte para el Protocolo de Compresión

A partir de PHP 5.3.2, el Controlador Nativo de MySQL soporta el protocolo de compresión cliente-servidor. El Controlador Nativo de MySQL no lo soportaba en 5.3.0 y 5.3.1. Las extensiones como `ext/mysql`, `ext/mysqli`, que están configuradas para usar el Controlador Nativo de MySQL, también puede tomar ventaja de esta característica. Observe que `PDO_MYSQL` NO soporta compresión al usarla junto con mysqlnd.

Soporte para Tuberías con Nombre

El soporte para las tuberías con nombre para Windows fue añadido en la versión 5.4.0 de PHP.