Mysqlnd
2015-06-25 by dongnan
功能
mysqlnd
(MySQL native driver) MySQL原生驱动,是由 PHP
提供的连接 mysql
数据库的驱动程序,用于代替libmysql驱动程序。
为什么使用 mysqlnd?
原生支持
libmysql
驱动依赖mysql
客户端库libmysqlclient
,为了使用libmysql
驱动,需要在编译PHP
之前安装好mysql
客户端库并指定其位置。
# 编译安装php
./configure --prefix=/usr/local/php \
--with-mysql=/path/to/mysql_config \
--with-mysqli=/path/mysql_config \
--with-pdo-mysql=/path/mysql_config \
#...省略
make && make install
使用 mysqlnd
则不必安装 mysql
客户端,因为PHP原生支持、直接在编译 php
时使用以下几个项参数即可:
# 编译安装php
./configure --prefix=/usr/local/php \
--with-config-file-path=/etc/ \
--enable-mysqlnd \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
# 其它参数省略...
make && make install
License版权
libmysql
是MySQL AB
公司开发的,版权属于Oracle
公司,它使用MYSQL License
发布。mysqlnd
是由Zend
公司开发并使用PHP License
发布的,避免Oracle
版权问题。
扩展
连接 mysql
数据库的 PHP
扩展程序:
- mysql扩展 (Original MySQL) 在
php 7.x
版本被移除。 - mysqli增强扩展 (MySQL Improved Extension) 。
- pdo_mysql (pdo for mysql) 从
5.4.0
开始默认使用 mysqlnd 驱动。
小结
- mysqlnd 库是C语言写成的PHP扩展,从
5.3.0
开始成为 PHP 的一部分,从5.4.0
开始成为默认驱动。 - mysqlnd 与 Zend 引擎集成,加快php程序执行速度,减少内存消耗。
- mysqlnd 提供了插件机制,例如
mysqlnd_ms
mysqlnd 主从复制和负载均衡插件。
参考
https://www.php.net/manual/en/set.mysqlinfo.php