今天重新编php的时候了解到还有个叫Mysqlnd的mysql扩展
查相关资料理解了一下,整理如下。
mysqlnd的意思就是 mysql Native Driver,mysql原生驱动
mysqlnd有以下几个好处:
1.编译方便:
编译的时候加上mysqlnd就可以了。不用每次编译去找mysql 的路径了。且php源码ext下本身就带着mysqland,安装的过程少了很多麻烦事。呵呵
./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
mysqlnd对mysqli以及pdo_mysql同时生效
2.效率
过去的php的mysql扩展,走的是mysql client library。
mysqlnd据说是mysql为php专门开发的,能与php跟好的协作,更底层,效率更高。
php.net上给出的一个例子是:
老的用mysql client library 的php扩展,读取一行记录会这一过程中,这一行会在内存中被保存2次,而mysqlnd就只会保存一次。
我想我们也容易理解,毕竟经过了php-》mysql client library-》mysql的调用路径,比起php-》mysql直接调用,效率会低一些。
3.license
mysqlnd是php项目的一部分,under php license。