2010-12-05 42 views
4

我的问题很简单,我需要读出一些模板(使用PHP)并将它们发送给客户端。什么是更昂贵的模板阅读:数据库查询或文件阅读?

对于这种数据,特别是text/html和text/javascript;将它们读出MySQL数据库或文件不足更为昂贵?

亲切的问候
汤姆

inb4安全;我意识到。 PS:我读过关于类似问题的其他主题,但他们要么处理其他类型的数据,要么没有得到回答。

回答

6

从数据库中读取更昂贵,毫无疑问。

平面文件在哪里?在文件系统上。在最好的情况下,它们最近被访问过,所以操作系统已经将文件缓存在内存中,并且它只是一个读取内存的内容,让它们进入你的PHP程序发送给客户端。在最糟糕的情况下,操作系统必须在程序可以使用之前将文件从光盘复制到内存。

数据库中的数据在哪里存在?在文件系统上。最好的情况是,它们最近被访问过,所以MySQL在内存中有这个表。但是,您的程序无法直接访问该内存,它需要先与服务器建立连接,来回发送验证数据,发送查询,MySQL必须解析并执行查询,然后从内存中获取该行并将其发送到您的程序。在最糟糕的情况下,操作系统必须在MySQL可以获得要发送的行之前,将磁盘上的数据库表文件复制到内存中。

正如您所看到的,这些方案几乎完全相同,只是在将数据从内存或磁盘中取出之前,使用数据库会涉及额外的连接和查询开销。

0

它真的没有足够的差异来担心你。你与哪种音量合作?你会每天有超过一百万的网页浏览量吗?如果没有,我会说选择哪一个最容易编码和维护,不要担心替代品的花费,直到它成为一个问题。

具体而言,如果您的模板目前处于文件格式,我会将它们留在那里,如果它们目前处于数据库格式,我会将它们留在那里。

+0

托比,我认为从数据库到文件或其他方式放在一起并不是一个真正的大问题,因为你只做一次,并同意去你知道的那个! – 2010-12-05 08:57:45

1

有许多因素会影响两者的成本。

  • 我假设既然他们是模板,他们可能不会经常改变。如果是这样,flat-file可能是更好的选择。任何重写都应该在数据库中完成。

  • 读取平面文件应该比从数据库读取数据更快。

  • 让他们在数据库中通常可以让多人更容易编辑。

您可以考虑使用内存缓存到存储模板阅读后,由于从内存中读取总是比从一个数据库或平面文件读取速度更快。