我想知道 MySQL Native Driver 和 MySQL Client Library 之间的区别以及何时使用它们
问问题
19884 次
2 回答
16
PHP语言级别没有太大区别。
- 由 MySQL 分发的 libmysqlclient,由 PHP 分发的 mysqlnd。
- libmysqlclient 是 MySQL 的一部分,您需要安装 MySQL 库。
- 他们的执照不同。
- mysqlnd 支持很多插件(mysqlnd_ms & mysqlnd_qc & ...)。
- 因为 mysqlnd 是 PHP 的一部分,所以它的内存可能会受到 PHP 配置的限制。
- mysqlnd是5.4以后的默认
于 2014-09-19T15:03:56.547 回答
6
mysql:
- 双重执照
- 可选的自动重新连接
- 所有内存分配和释放都是使用操作系统内存管理完成的
mysqlnd:
- PHP 许可证
- 非阻塞、异步查询
- 性能统计(mysqli_get_client_stats,mysqli_get_connection_stats)
- LOAD LOCAL INFILE 尊重 open_basedir 指令
- 所有内存分配和释放都是使用 PHP 内存管理函数完成的(您可以使用PHP 函数和调试功能跟踪内存使用情况,并且 PHP 内存限制也适用,这有其优点和缺点)
mysqlnd通过插件:
- 复制和负载平衡
- 故障转移
- 惰性连接
- 连接多路复用
- 查询缓存,MySQL InnoDB Memcached 插件支持
- 透明查询操作(自动解释)
mysql和mysqlnd之间的不兼容:
- bit 数据类型的值在 mysql.so 中以二进制字符串形式返回,在 mysqlnd.so 中以十进制字符串形式返回(来源)。
基于此文档和其他文档: http: //php.net/manual/en/mysqlinfo.library.choosing.php
于 2019-01-23T13:58:51.850 回答