最近做个小的域名状态监测系统,框架和数据库设计好之后,琢磨着之前都是胡乱写,没有个专业的框架啥的,所以此次就着重选了一些,结果发现,这种小系统用框架其实完全是不需要的……囧,好吧,不用大的框架,用一些常用的类也可以避免重复劳动不是么,找了下,数据库就定位到了medoo。在查看文档中发现其使用的pdo的方式连接数据库,由于之前有过一些缘分,对性能有些敏感,所以就想了解下这些常用的方式对性能都有神马差别,于是就有了下文。

在PHP的MySQL库之Pdo-Mysql与Mysqli性能对比(http://database.51cto.com/art/201108/281381.htm)文中,给出的结论如下:
1. Pdo-Mysql之所以比Mysqli快,是由于Pdo-Mysql对数据库的操作比Mysqli要少;
2. 在Pdo-Mysql使用了长连接的测试中,Web服务器内存持续上涨。
(简单查了一下,是Aapche服务的httpd进程内存上涨)
那么单纯从性能角度看,Pdo-Mysql长连接性能最佳,但有何弊端还有待查证。

此文写于2011年,所以单看他的话,不足说明什么,经过三年发展,其方式的内存优化等一定已经达到了另一个高度了。接着看,MySQL,MySQLi,PDO的各自不同介绍(http://www.jb51.net/article/31332.htm)。
以下几乎是全文转载:
普通的MySQL连接肯定是会被抛弃的 因为每次都要防止sql注入的问题 而且相对来说比较慢。
MySQLi是在普通MySQL的基础上做的一次优化 说实话 很成功 预处理方式完全解决了sql注入的问题,但是唯一的不足点 就是只支持MySQL数据库 当然 如果你要是不操作其他的数据库或者 当然这无疑是最好的选择PDO则是最新出来的一种 连接方式 兼容大部分数据库 也解决了sql注入 但是也有缺点 它只支持php5以上的版本 不过听说在未来的php6中 只支持这种连接。
PDO统一所有数据库抽象层对象接口,MySQLi只统一MySQL的。
简单说,PDO可以实现同样的代码对不同数据库的操作,例如你从MySQL迁移到mssql,程序基本不需要改动,而MySQLi简单理解未MySQL的封装就好。
在高负载的情况下.PDO开启长连接能够得到一个相对稳定的负载“值”。但是效率却不是最高的。
MySQL最快。MySQLi其次。只是MySQL和MySQLi在高并发、系统高负载的时候。其所承担的负载也是很可观的。PDO则不会。

看着,好像还是比较推荐PDO,又看了些相关的,有国外友人推荐使用PDO,因为它是个设计优良的API,需要的话,你能够非常容易得迁移到其他数据库(包括任何支持ODBC的数据库)上去。

恩,探究就暂时至此,使用PDO的方式看来会成为未来的一个方向。

Related Posts: MySQL,MySQLi,PDO的各自不同介绍 :