Las extensiones de PHP mysqli, PDO_MySQL y mysql son envolturas ligeras en lo alto de una biblioteca cliente en C. Las extensiones pueden usar la biblioteca mysqlnd o la biblioteca libmysql. Elegir una biblioteca es una decisión en tiempo de 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 lentas y almacenamiento en caché de consultas, características que no están disponibles con libmysql, por lo que se recomienda encarecedamente usar la biblioteca mysqlnd interna. Véase la documentació de mysqlnd para detalles adicionales y una lista de características y funcionalidades que ofrece.
Ejemplo #1 Comandos de configuración para usar mysqlnd o libmysql
// Recomendado, compilar con mysqlnd $ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd // No recomendado, compilar con libmysql $ ./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 Client Server (libmysql). Ambas bibliotecas están soportadas y siendo constantemente mejoradas.
Controlador Nativo de MySQL (mysqlnd) | Biblioteca Cliente Servidor de MySQL (libmysql) | |
---|---|---|
Parte de la distribución de PHP | Sí | No |
Versión de PHP donde se introdujo | 5.3.0 | N/A |
Licencia | Licencia PHP 3.01 | Licencia Dual |
Estado de desarrollo | Activo | Activo |
Ciclo de vida | Fin no anunciado | Fin no anunciado |
Compilación predeterminada en PHP 5.4 (para todas las extensiones MySQL) | Sí | No |
Compilación predeterminada en PHP 5.3 (para todas las extensiones MySQL) | No | Sí |
Soporte para protocolo de compresión | Sí (5.3.1+) | Sí |
Soporte para SSL | Sí (5.3.3+) | Sí |
Soporte para tubería con nombre | Sí (5.3.4+) | Sí |
No bloqueo, consultas asíncronas | Sí | No |
Estadísticas de rendimiento | Sí | No |
LOAD LOCAL INFILE respecito a la directiva open_basedir | Sí | No |
Usa el sistema de gestión de memoria nativo de PHP (p.ej., cumple los límites de memoria de PHP) | Sí | No |
Devuelve columnas numéricas como valores double (COM_QUERY) | Sí | No |
Devuelve columnas númericas como valores string (COM_QUERY) | Sí | Sí |
API de complementos | Sí | Limitada |
Separación de lectura/escritura para Replicación MySQL | Sí, con complemento | No |
Balace de carga | Sí, con complemento | No |
Tolerancia a fallos | Sí, con complemento | No |
Conexiones lentas | Sí, con complemento | No |
Almacenamiento en caché de consultas | Sí, con complemento | No |
Manipulación de consultas transparente (p.ej., auto-EXPLAIN o monitorización) | Sí, con complemento | No |