7.1概述

PHP文档组版权所有。10bet官方网站

它不是什么

虽然MySQL原生驱动程序是作为PHP扩展编写的,但需要注意的是,它并没有为PHP程序员提供新的API。用于MySQL数据库连接的程序员api由MySQL扩展提供,mysqli和PDO MYSQL。这些扩展现在可以使用MySQL原生驱动的服务来与MySQL服务器通信。因此,你不应该认为MySQL原生驱动程序是一个API。

为什么要用它?

使用MySQL原生驱动程序比使用MySQL客户端库提供了许多优势。

旧的MySQL客户端库是由MySQL AB(现在的Oracle公司)编写的,因此是在MySQL许可证下发布的。这最终导致PHP默认禁用MySQL支持。然而,MySQL原生驱动程序是作为PHP项目的一部分开发的,因此是在PHP许可证下发布的。这消除了过去一直存在的许可问题。

此外,在过去,您需要根据MySQL客户端库的副本构建MySQL数据库扩展。这通常意味着需要在构建PHP源代码的机器上安装MySQL。此外,当PHP应用程序正在运行时,MySQL数据库扩展将在运行时向下调用MySQL Client库文件,因此需要在系统上安装该文件。在MySQL原生驱动中,这种情况不再存在,因为它是标准发行版的一部分。因此,构建PHP或运行PHP数据库应用程序不需要安装MySQL。

因为MySQL原生驱动程序是作为PHP扩展编写的,所以它与PHP的工作紧密耦合。这将提高效率,特别是在内存使用方面,因为驱动程序使用PHP内存管理系统。它还支持PHP内存限制。使用MySQL原生驱动程序可以获得与使用MySQL客户端库相当或更好的性能,它总是能确保最有效地使用内存。内存效率的一个例子是,当使用MySQL客户端库时,每行在内存中存储两次,而使用MySQL本机驱动时,每行只在内存中存储一次。

报告内存使用情况

因为MySQL原生驱动程序使用PHP内存管理系统,它的内存使用情况可以被跟踪memory_get_usage.这在libmysqlclient中是不可能的,因为它使用C函数malloc()代替。

特殊功能

MySQL原生驱动程序还提供了一些特殊的特性,当MySQL数据库扩展使用MySQL客户端库时是不可用的。以下列出了这些特殊功能:

性能统计工具在识别性能瓶颈方面非常有用。

时,MySQL原生驱动程序还允许持久连接mysqli扩展。

SSL支持

MySQL原生驱动程序支持SSL。

压缩协议支持

MySQL原生驱动程序支持压缩客户端服务器协议。扩展ext / mysqli,如果配置为使用MySQL原生驱动程序,也可以利用这个特性。请注意,PDO_MYSQL与mysqlnd一起使用时支持压缩。

命名管道支持

命名管道可用于在Windows环境中进行连接。