博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于mysql, mysqli, pdo, pdo_mysql, mysqlnd, libmysql的解释
阅读量:3987 次
发布时间:2019-05-24

本文共 1329 字,大约阅读时间需要 4 分钟。

从功能上分类

分为驱动和应用层API,驱动就是实现了Mysql客户端协议,用来和mysql server 通讯的程序,比如,当你安装了mysql server后,可以使用它自带的mysql程序来连接并操作数据库。那么别的程序要想和mysql server通讯,也要实现这一协议。比如常用的navicate;同样的,作为php而言也需要有对应的实现,但是mysql开发团队为了大力推广自己,就编写了动态链接库libmysql.dll供所有的编程语言使用,这样大家就不用去研究协议细节了,只需要引入libmysql.dll,然后抽象出一层调用即可,这看起来很不错,于是mysql扩展就是干这个的,也是我们最开始使用的操作mysql的函数库(mysql_connect, mysql_query, mysql_fetch_array等等)。

驱动:实现了指定数据库通讯协议的客户端,用来和数据库直接通讯。

API:通过调用驱动程序来调用数据库,使开发者更便捷的操作数据库。

驱动:mysqlnd, libmysql

API:mysql(对应libmysql),mysqli(对应mysqlnd),pdo_mysql(对应mysqlnd)

PDO:PHP Data Object ,是对所有数据库操作抽象的接口,它不提供具体实现,pdo_mysql,pdo_sqlite实现了pdo接口,分别实现了对mysqlnd和sqlite驱动的调用,也就是操作mysql, sqlite3数据库。

所以在编译配置的时候经常看到这样的写法

–enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

关于mysqlnd

Mysql Native驱动(Mysql Native Driver 简称:mysqlnd )在PHP5.3.0版本中被引入。PHP5.4之后的版本mysqlnd被作为默认配置选项。 由zend公司开发的MySQL数据库驱动,采用PHP开源协议(即PHP license)避免了任何可能存在的版权问题。而旧的libmysql是有Mysql AB公司(现在的Oracle Corporation)开发,依照mysql license。

libmysql有的功能mysqlnd它几乎都有,但是mysqlnd并不像libmysql那样作为通用库,它是专门为PHP而写的一个库,用了PHP的内在管理函数以及一些网络流的函数。

由于版权问题,PHP5中没有默认支持MySQL,不像以前的PHP4那样可以直接使用MySQL函数。Mysql支持还需要把libmysql.dll复制到windows目录,然后修改php.ini等等,比较麻烦。

PHP在5.3版本中,提供了一个mysqlnd库,用来访问MySQL数据库,大大提升了PHP的数据库访问性能。

我们知道,PHP访问MySQL数据库,是通过MySQL数据库的libmysql client库,这个libmysql client是用C/C++编写的,虽然一直以来PHP通过libmysql访问数据库性能也一直很好,但是却无法利用PHP本身的很多特性。

转载地址:http://xdaui.baihongyu.com/

你可能感兴趣的文章
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
可扩展、高可用服务网络设计方案
查看>>
如何构建高扩展性网站
查看>>
微服务架构的设计模式
查看>>
技术领导力:作为技术团队领导经常为人所忽略的技能和职责
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++数组指针和指针数组详解
查看>>
c++指针常量与常量指针详解
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++的string类初始化及其常用函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
STL分配器allocator
查看>>
STL::deque以及由其实现的queue和stack
查看>>
WPF与MVVM的实现(四)命令绑定
查看>>
WPF与MVVM的实现(三)List的数据绑定
查看>>
CS4344驱动
查看>>
WAV文件解析
查看>>
DAC输出音乐2-解决pu pu 声
查看>>