Elegir una biblioteca

Las extensiones de PHP mysqli, PDO_MySQL y mysql son envolturas ligeras sobre una biblioteca cliente en C. Las extensiones pueden usar la biblioteca mysqlnd o la biblioteca libmysqlclient. Elegir una biblioteca es una decisión que se ha de tomar durante la compilación.

La biblioteca mysqlnd es parte de la distribrución de PHP desde la versión 5.3.0. Ofrece características como conexiones inactivas y caché de consultas, características que no están disponibles con libmysqlclient, por lo que se recomienda encarecedamente usar la biblioteca mysqlnd interna. Véase la documentación de mysqlnd para detalles adicionales y una lista de las características y funcionalidades que ofrece.

Ejemplo #1 Comandos de configuración para usar mysqlnd o libmysqlclient

// Recomendado, compila con mysqlnd $ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd$ ./configure --with-mysqli --with-pdo-mysql --with-mysql$ ./configure --with-mysqli=/ruta/a/mysql_config --with-pdo-mysql=/ruta/a/mysql_config --with-mysql=/ruta/a/mysql_config

Comparación de las características de las bibliotecas

Se recomienda usar la biblioteca mysqlnd en lugar de la biblioteca Cliente Servidor de MySQL (libmysqlclient). Ambas bibliotecas están soportadas y se mejoran constantemente.

 Controlador Nativo de MySQL ( mysqlnd)Biblioteca Cliente Servidor de MySQL (libmysqlclient)
Parte de la distribución de PHPNo
Versión de PHP donde se introdujo5.3.0N/A
LicenciaLicencia PHP 3.01Licencia Dual
Estado de desarrolloActivoActivo
Ciclo de vidaFin no anunciadoFin no anunciado
PHP 5.4 y superior; compilación predeterminada (para todas las extensiones de MySQL)No
PHP 5.3; compilación predeterminada (para todas las extensiones de MySQL)No
Soporte para el protocolo de compresiónSí (5.3.1+)
Soporte para SSLSí (5.3.3+)
Soporte para tubería con nombreSí (5.3.4+)
No bloqueo, consultas asíncronasNo
Estadísticas de rendimientoNo
LOAD LOCAL INFILE respecto a la directiva open_basedirNo
Usa el sistema de gestión de memoria nativo de PHP (p.ej., cumple con los límites de memoria de PHP)No
Devuelve columnas numéricas como valores de tipo double (COM_QUERY)No
Devuelve columnas númericas como valores de tipo string (COM_QUERY)
API de complementosLimitada
Separación de lectura/escritura para la Replicación de MySQLSí, con complementoNo
Equilibrado de cargaSí, con complementoNo
Tolerancia a fallosSí, con complementoNo
Conexiones inactivasSí, con complementoNo
Caché de consultasSí, con complementoNo
Manipulación transparente de consultas (p.ej., auto-EXPLAIN o monitorización)Sí, con complementoNo
To Top