针对“不要做愚蠢+OUT的程序员……”的测试,mysql基本连接,mysqli,pdo,adodb,pearDB间的区别,速度测试
时间:2010-07-29
来源:互联网
现转帖一篇,以供大家求证。
mysql基本连接,mysqli,pdo,adodb,pearDB之间的区别,速度测试。
测试了一下mysql基本连接,mysqli,pdo,adodb,pearDB这几个的速度,结果如下:
用火狐测试1000次查询:
mysql基本连接: 2.26953577995
mysql基本连接: 2.18697500229
mysql基本连接: 1.75704884529
mysql基本连接: 2.14706707001
mysql基本连接: 1.51761412621
mysql基本连接: 1.7188680172
mysql基本连接: 2.32342600822
mysql基本连接: 1.34252810478
mysql基本连接: 1.45732498169
mysql基本连接: 3.65399098396
10次总共时间: 20.3743789196
最快的时间: 1.34252810478
mysqli: 2.35137701035
mysqli: 2.01316308975
mysqli: 1.98780703545
mysqli: 2.21229410172
mysqli: 2.24351000786
mysqli: 1.49605917931
mysqli: 2.17403697968
mysqli: 2.6106979847
mysqli: 2.58286499977
mysqli: 3.17641019821
10次总共时间: 22.8482205868
最快的时间: 1.49605917931
pdo: 1.90496611595
pdo: 3.74309897423
pdo: 1.86429619789
pdo: 3.76973009109
pdo: 3.53142094612
pdo: 2.90672111511
pdo: 1.9796090126
pdo: 2.14065814018
pdo: 2.19515609741
pdo: 2.10665798187
10次总共时间: 26.14231467245
最快的时间: 1.86429619789
adodb: 2.5019569397
adodb: 2.61657714844
adodb: 2.92435717583
adodb: 2.80851197243
adodb: 2.60950493813
adodb: 2.54582691193
adodb: 2.11301803589
adodb: 2.50546598434
adodb: 2.60761213303
adodb: 2.22149610519
10次总共时间: 25.45432734491
最快的时间: 2.11301803589
pearDB: 4.00152897835
pearDB: 4.18637084961
pearDB: 4.05423617363
pearDB: 4.27408695221
pearDB: 3.83169102669
pearDB: 4.07294511795
pearDB: 4.41416597366
pearDB: 4.13296508789
pearDB: 4.28273415565
pearDB: 4.09678888321
10次总共时间: 41.34751319885
最快的时间: 3.83169102669
再次以火狐测试10000次查询:
mysql基本连接: 21.663392067
mysqli: 20.0792491436
pdo: 30.829996109
adodb: 27.3853821754
pearDB: 40.922711134
mysql基本连接: 18.972700119
mysqli: 19.537981987
pdo: 20.9608280659
adodb: 24.1204249859
pearDB: 38.7300019264
得出结论:
mysql和mysqli速度基本差不多,或者是mysql略快;
pdo和adodb速度差不多,比mysql和mysqli要慢一些;
pearDB最慢。
那么,实现开发中,我们该用哪个好呢?
从运行效率的角度来说,当然是用mysql基本连接或mysqli了。mysql基本连接是一堆函数,有一些功能如取得二维数据之类等可能需要自己去封装。mysqli是php的扩展,是一个预定义类,功能强,使用方便,但有的服务器上可能没有安装mysqli扩展。
pdo同mysqli一样是php的一个扩展,有的服务器可能也没有安装pdo,而且比mysqli略慢,所以一般不推荐使用。选择pdo不如选择mysqli。
adodb是php写成的,不需要安装额外的扩展,可以操作多种数据库。所以如果你的系统可能会改变数据库或涉及到多种数据库,可以用adodb。但一般实际开发中都是确定的一个数据库,所以也不建议使用。
pearDB最慢,也看不出来有什么特别的优点,不推荐使用。
最终结论:
可用mysql基本连接,自己封装成类。特别是开源程序,因为不确定服务器是否可以支持mysqli,应使用mysql基本连接。
特定的项目,有自己的服务器,可以自行安装mysqli扩展,推荐使用mysqli。
mysqli在5.3.0时加上了持久连接。
个人见解:
Mysql基本的数据操作函数本省就简单,少且经典,效力又高,自己封装一个简单的MySQL数据操作类比较合适。
现流行的CMS及开源PHP项目中也正是如此做的。
作者: jmone 发布时间: 2010-07-29
作者: mofe 发布时间: 2010-07-29

作者: goodluck709 发布时间: 2010-07-29
不想回敬你其他的。专嚼别人嚼过吐出来的馒头。。有意思么。。哥笑了
....是扯淡么
作者: cain 发布时间: 2010-07-29
蛋疼的去测这个呗。
pdo 和 MDB2 都是把数据库访问语言抽象出来了,好处是显而易见的。
用个大循环拼命测试访问速度是没有意义的。
作者: boborabit 发布时间: 2010-07-29
100,000次的并发MySQL和MySQLi明显支撑不住(严格地说是MySQL支撑不住-_-)。而PDO却是越发的表现高稳定性的优势!除了速度慢(MySQL和MySQLi早就Die掉了,额,纠正,是高频率的对MySQL进行读写。MySQL支撑不住),在稳定性上占有绝对的优势!
作者: cain 发布时间: 2010-07-29
PDO(PHP Data Objects)是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力;与ADODB和MDB2相比,PDO更高效。目前而言,实现“数据库抽象层”任重而道远,使用PDO这样的“数据库访问抽象层”是一个不错的选择。
PHP 6将默认使用PDO来处理数据库,把所有的数据库扩展移到了PECL
作者: cain 发布时间: 2010-07-29
作者: mofe 发布时间: 2010-07-29
作者: fym8888 发布时间: 2010-07-29

作者: mijian 发布时间: 2010-07-29
用火狐测试1000次查询:

作者: xiaokai 发布时间: 2010-07-29
到底都是要链到MySLQ数据库上,中间你再多的并发还是MySQL的查询在做,而发送这个查询到数据库处理中间的效率才是关键所在
如果非要说并发的话,那牵扯的东西可就多的去了,单单你一个上而上层的程序就往并发上扯,那才叫可笑
再说原生态的mysql查询很早前就支持永久链接了,如果涉及并发的话,更胜一筹是没话说的。
作者: jmone 发布时间: 2010-07-29
哎。。
你写程序就1000次循环就完了是吧...
C扩展。。哎。。无语了。。。你看过MySQL的扩展代码么
mysqli是永远连接函数,mysql每次链接都会打开一个连接的进程而mysqli多次运行mysqli将使用同一连接进程,理解什么叫进程和线程么?不知道就先去百度一下行么?而PDO的所有底层代码全部重写的,你要是懂C就去看看他的源代码行么?看完了在说行么。。
我就不多说了。。上边已经说过了
持久连接和“使用同一进程”是一个意思是吧?
哎。。继续笑
作者: cain 发布时间: 2010-07-29
再说原生态的mysql查询很早前就支持永久链接了,如果涉及并发的话,更胜一筹是没话说的。
一段官方的话
翻译
作者: xiaokai 发布时间: 2010-07-29

作者: wybwsk 发布时间: 2010-07-29

作者: cain 发布时间: 2010-07-30

作者: zhangyuan86816 发布时间: 2010-07-30

作者: cain 发布时间: 2010-07-30






不好意思,出去逛了一天,才看到回帖
到服务器上巴拉了回mysql_pcontent的代码看了下(mysqli的源码没有找到),mysql_pcontent对链接做了一个暂存的处理,类似于连接池(看来我真的是很无知啊)
简单的构建了一个压力测试环境,两台服务器(Linux操作系统、4核、16G内存),一台只开了mysql服务,一台只有Web服务。
普通机器7台,单机可同时模拟80多的并发访问
测试的内容包括:效率和抗负荷能力。
循环测试的时候,5000次循环;mysql与mysqli差不多,mysql还是稍胜,快了20%左右,比PDO快70倍多
峰值大约110以内时,mysql、mysqli效率不相上下,mysqli比较快,比mysql快10左右、比pdo快近100倍左右
峰值150时,mysql故障,偶尔报错。
峰值接近310时,mysql已经无法打开。mysqli也开始故障
330时,mysqli同样无法打开页面
pdo在一直无恙。
作者: jmone 发布时间: 2010-07-30
作者: cain 发布时间: 2010-07-31
作者: 策马江湖 发布时间: 2010-08-26
作者: element 发布时间: 2010-08-26
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28