哪个在php / mysql中更快?文件操作或连接池

时间:2013-04-01 07:38:22

标签: php pdo mysqli

我必须决定是否应该更改我的网络主机,因为我当前的主机不支持mysqli。目前,我通过保存数据文件并使用fopen, fwrite, fread进行数据操作。我正在考虑使用连接池在mysql中保存数据。除了安全性(坦率地说并不重要),数据搜索在mysql中更容易。但是用户每隔几秒就会访问一次mysql数据库,因此连接池是必须的,处理时间也是如此。

我已经计算过,没有连接池,与文件操作相比,mysql中的处理时间要慢很多倍。我想知道连接池和文件操作之间的延迟差异,以及连接池是否明显快于通过php进行文件操作。

如果我选择了连接池,那么在主机服务器上处理负载会有什么不同。

提前致谢。

3 个答案:

答案 0 :(得分:2)

查询&操作大文件中的数据可能比没有连接池的mysql更慢,更繁琐。而且你需要处理文件锁定,并发问题。

无论如何,尽量不做任何过早的优化。使用适当的数据库,然后从那里收集性能统计。只在必要时进行优化。

答案 1 :(得分:0)

每次用户从Web服务器请求特定资源然后终止时,都会执行PHP脚本。因此脚本不能共享资源,因此PHP中没有连接池;一旦脚本到达EOF,apache将释放所有资源。

编辑,至于你的实际问题,几乎不可能给出一个更快的一般答案,它取决于太多的参数,如磁盘类型,网络连接,之间的跳数服务器和数据库等。您必须对不同的方法进行基准测试,并将结果相互比较,以便为您的特定设置获得明确的答案。

搜索类似的主题我发现了这个,它提供了有关PHP中连接池的信息(Connection pooling in PHP)。

答案 2 :(得分:0)

我担心你的假设都是错的。

首先,将文件与DB进行比较。从来没有这样的问题。世界上所有网络程序员已经使用各种数据库,连接池或没有连接池。从几MB的数据量开始,数据库是唯一解决方案。

其次,关于连接池。至少有90%的网站在没有任何连接池的情况下工作愉快,每秒甚至可以支持几十个请求。

我不知道你在哪里得到你的数字用于计算,但我担心来源是非常不可靠的。最好使用数据库启动您的站点,无需连接池。解决您将遇到的所有问题,将您的网站扩展到一百个在线用户,然后开始考虑连接池。

顺便说一句,如果您当前的主机支持PDO,您甚至不需要移动。由于PDO现在似乎是PHP的唯一可靠的mysql驱动程序。但是,甚至不要开始使用mysqli - 它完全无法使用。