什么是模板阅读更昂贵:数据库查询或文件读取?

时间:2010-12-05 08:41:10

标签: php mysql templates file

我的问题很简单;我需要读出一些模板(在PHP中)并将它们发送给客户端。

对于这种数据,特别是text / html和text / javascript;从MySQL数据库或文件中读取它们是否更昂贵?

亲切的问候 汤姆

inb4安全;我知道。

PS:我读过有关类似问题的其他主题,但要么与其他类型的数据有关,要么没有得到答案。

3 个答案:

答案 0 :(得分:6)

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

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

数据库中的数据存在于何处?在文件系统上。在最好的情况下,它们最近被访问过,因此MySQL在内存中有该表。但是,你的程序无法直接获取该内存,它需要先与服务器建立连接,来回发送认证数据,发送查询,MySQL必须解析并执行查询,然后从内存中获取行并将其发送到您的程序。在最坏的情况下,操作系统必须从磁盘上的数据库表文件复制到内存,然后才能获得要发送的行。

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

答案 1 :(得分:1)

有很多因素会影响两者的价格。

  • 我会假设因为它们是模板,所以它们可能不会经常更改。如果是这样,平面文件可能是更好的选择。任何重写都应该在数据库中完成。

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

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

您可以考虑使用memcache在读取模板后存储模板,因为从内存中读取总是比从db或flat文件中读取更快。

答案 2 :(得分:0)

真的没有足够的区别让你担心。你正在使用什么样的音量?你每天的页面浏览量会超过一百万吗?如果不是,我会说选择哪一个最容易编码和维护,不要担心替代品的费用,直到它成为一个问题。

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