PHP Mysqlnd驱动

什么是Mysqlnd (MySQL本机驱动)

Mysqlnd是由PHP源码提供的mysql驱动连接代码。它的目的是代替旧的libmysql驱动。

传统的安装php的方式中:

--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql/bin/mysql_config \

这实际上就是使用了MySQL官方的libmysql驱动, 这是比较老的驱动, PHP 5.3开始已经不建议使用它了, 而建议使用mysqlnd。

为什么用它?

mysqlnd 针对与PHP的应用交互进行优化,libmysqlclient是早期为C应用程序设计的,并没有针对性的优化。

mysqlnd和Zend引擎高度的集成性,更加快速执行速度,更少内存消耗,利用了PHP的Stream API 进行底层连接,以及客户段缓存机制。由于mysqlnd是透过Zend引擎,因此提供更多高级特性,以及有效利用Zend进行加速,原理图如下:

PHP Mysqlnd驱动_第1张图片
image.png
  • Mysqlnd 作为PHP项目的一部分开发的,根据PHP许可证发布的。
  • libmysql构建MySQL数据库扩展。要在构PHP源代码的机器上安装MySQL。Mysqlnd 不需要。
  • 压缩协议支持
  • SSL支持
  • 命名管道支持
  • 非阻塞异步查询
  • 性能统计
  • 加载本地文件方面的open_basedir的指令
  • 使用PHP的本地内存管理系统(例如,遵循PHP内存限制)
  • 用于MySQL复制的读/写分割 (with plugin)
  • 负载均衡 (with plugin)
  • 故障转移 (with plugin)
  • 懒连接 (with plugin)
  • 查询缓存 (with plugin)
  • 透明查询操作(例如,自动显示或监控) (with plugin)
    ......

安装

  • 5.3.0添加了Mysqlnd 驱动程序,支持所有MySQL扩展(即mysql,mysqli和PDO)

  • 5.4.0 Mysqlnd 是所有MySQL扩展的默认驱动

#推荐使用mysqlnd编译
$ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd

Mysqlnd插件

  • 在PHP应用程序和MySQL服务器之间的层中运行。

  • 可以承担典型的MySQL代理任务,如负载平衡,监控和性能优化。

  • 是对mysqlnd的扩展。

  • 使用C编写的PHP扩展,使PHP应用程序100%透明。 mysqlnd插件可以被认为是在mysqlnd下面的层中运行的。

可用插件

mysqlnd_mc - 多连接插件。
mysqlnd_ms - 主从插件。
mysqlnd_qc - 查询缓存插件。
mysqlnd_pscache - 预处理句柄缓存插件。
mysqlnd_sip - SQL注入保护插件。
mysqlnd_uh - 用户处理程序插件。

你可能感兴趣的:(PHP Mysqlnd驱动)