同级别数据量:请教 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等),而不是反方向,
逆向而行一般需要特别的理由
Kenyataan: Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn