跳转至

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版权

  • libmysqlMySQL 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

欢迎关注微信公众号: 运维录

Back to top