sqlite 针对文件系统读取数据的比较 file_get_contents readfile
前文讲了sqlite与mysql的查询速度进行比较,sqlite并没有优势。
由于网站缓存的需要,所以又对其进行比较。
我的新闻站目录结构是 以1000个文件为一个目录进行缓存,数据库存储标题等需要显示的内容,文件系统缓存器内容的主体部分,那样可以将数据库最小化,但是如果有100W个文件,虽然可以很快的找到文件,但是linux top命令中的wa值将很高,也就是说会严重影响系统的IO。所以sqlite像这样的单文件数据库将会起到很好的作用。
于是编辑php文件进行测试。

flie中包含所测试的文件 大概为1.1W左右,与前文差不多。

显示的空间为67M,file.db是将数据写入数据库后大小,总共有49M作用,也就是说sqlite数据库对数据也进行了轻微的压缩。
任意读取一个随机的文件,分别冲数据库和直接从文件目录读取速度如下:

第一个是数据库读取。
第二个是使用file_get_contents函数读取数据。经过多次测试,sqlite优势明显。
这个是readflie读取文件,速度最快。
由此可见,使用sqlite来缓存数据文件还是很有优势的,特别是数据文件特别多情况下,可以明显改善系统的IO。
而且,还有一点不能忽略,以后备份系统只需要将数据库下载即可,无需对数据进行压缩后下载了。
最后,补充一点,由于每次打开sqlite连接时占用比较长的时间,所以我认为,sqlite打开是使用popen来打开长连接比较合适。





