Home  >  Article  >  Backend Development  >  同级别数据量:请问 php 查数据库 查文件 哪个快

同级别数据量:请问 php 查数据库 查文件 哪个快

WBOY
WBOYOriginal
2016-06-13 13:25:25855browse

同级别数据量:请教 php 查数据库 查文件 哪个快
请教大家,通过php的函数file_exists()查询文件是否存在,这个函数运行速度和从数据库里查询一条记录相比哪个比较快?
前提,如果是数据库的话单表200万行数据以上(数据量比较大,最终可能过千万),如果是文件的话也是同等级数据量。 
如果使用函数查询,只要知道是否存在即可,如果数据库查询,则需要select出;

请各位前辈指点指点,谢谢

------解决方案--------------------

探讨

性质不同,不具可比性

仅就效果而言
当文件数小于 1024 时,file_exists 快于数据库

按你说的文件数大于200万的话,你已经无法在一个目录中容纳这些文件了。没有效率可言

------解决方案--------------------
判断文件存在时,是不是就要对这200万行甚更多的path进行循环判断。
现在进行比对的就是
200万+的file_exists vs 200万+的select

file_exists函数是会缓存的。 查找数据库orm联结,select多次

所以我倾向于select
------解决方案--------------------
只要你规划好目录结构,应该是没有问题的
需要注意的是,由于文件必须组织在多级目录中,文件中的连接就需要做些处理了
不是很清楚linux的文件系统,以 windows 系统为例:文件在硬盘中是按簇存放的,无论文件多么小,都要占有一簇(4kb)

那么你的 200万 个文件至少需要 2M * 4K = 8G 空间
------解决方案--------------------
不知道你的数据到底是什么数据, 大部分情况下,数据本身的变动性较大, 
如何检索也需要知道. 

数据库支持多样化的查询, 删除修改也很方便. 

文件这些方面都不擅长,更何况这么多文件....

"我想是这样的: html肯定是比较不消耗服务器资源的,所以我想把数据库的文件全部生成静态文件,也就是html文件"
如果这是你唯一的原因,那么我基本认定这样搞静态化是毫无必要.

web是从静态的html转向了动态的技术(php等),而不是反方向,
逆向而行一般需要特别的理由
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn