读取文件比从数据库读取数据更快吗?
在资源和效率方面,文件的读写操作和数据库的读写操作,哪个更耗费资源呢?
我正在使用MongoDB和Python。我每分钟大约会对数据库或文件进行10万次请求。同时,数据库或文件中大约有15000个文档。
哪种操作会更快呢?谢谢!
4 个回答
1
从数据库读取数据通常更高效,因为你可以直接访问记录,还能利用索引等功能。而普通的平面文件,你基本上只能顺序读取,也就是说要从头到尾一个一个地看。
如果你在一个多用户的环境中工作,你需要确保数据的一致性,即使多个用户同时尝试更新数据。在使用平面文件时,你必须锁定文件,只有一个用户可以进行更新,其他用户都得等着,等这个用户更新完了才能轮到下一个。而数据库可以在行级别进行锁定,这样就更灵活了。
你可以把基于文件的系统做得和数据库一样高效,但这样做的工作量就相当于自己写一个数据库系统。
3
要给出一个具体的答案有很多因素需要考虑,不过这里有一些你可以想想的要点:
- 磁盘带宽:这是指磁盘在单位时间内可以传输的数据量。
- 磁盘延迟:这是指从请求数据到开始接收到数据之间的时间。
- 磁盘缓存:这是磁盘用来临时存储数据的地方,可以加快数据访问速度。
- 网络带宽:这是指网络在单位时间内可以传输的数据量。
- MongoDB集群大小:这是指你使用的MongoDB数据库的服务器数量和配置。
- MongoDB客户端活动量:这指的是使用MongoDB的程序或用户的数量,磁盘通常只有一个“客户端”,除非你的机器正在处理其他任务。
6
这要看情况。如果你需要读取有顺序的数据,文件可能会更快;但如果你需要读取随机的数据,数据库通常会更适合你的需求。
(毕竟,数据库也是从文件中读取记录,但它有内部结构和算法来提高性能,它可以更聪明地使用内存,并在后台做很多事情,这样结果就能更快出来。)
如果是大量随机读取的情况,我会选择数据库。