文件读/写与数据库读/写

时间:2010-07-20 18:34:58

标签: database database-design file file-io filesystems

在资源和效率方面做得更贵,文件读/写操作或数据库读/写操作

3 个答案:

答案 0 :(得分:10)

我最初会说数据库读/写,向下移动,因为它将在数据库开销之上包含必需的文件io,但后来意识到它并不那么简单。如果您将整个数据库加载到内存中,则读取几乎是即时的,因为不涉及文件IO。

一般来说,写入也会更快,因为数据库引擎在返回之前不必等待文件IO完成,因为它们可以采用“惰性写入”方法。

另一方面,调整不佳的数据库将比任何基于文件的IO慢几个数量级。数据库调优很重要很多。

答案 1 :(得分:3)

这是一个有问题的问题。我们在谈论什么尺寸的文件?千兆字节?另外,DB的类型和大小是多少?我经常使用组合。您想控制任何数据级别的完整性吗?如果是这样,您可能希望将其留给DB,否则您必须在应用程序级别控制所有这些 有很多因素可以做出正确的决定。例如,当我创建我不想持久的临时数据时,我使用File,但如果我使用的数据我想要持久化或备份,那么我使用数据库。
这与架构相结合非常重要。如果硬件,许可或设施是一个问题,那么您可能不需要数据库服务器的基础设施等。但如果您有资源,那么添加数据库层可能是正确的选择。

答案 2 :(得分:0)

没有简单的答案。对于任何数据库,您都有让它一直运行的开销。但是当你访问它时通常比访问文件快得多。如果您只是谈论一些访问,您将不会注意到很多差异。但是当它达到每分钟数百,数千和数百万次访问时,数据库将更快。正如Tim上面提到的,调整得不好的数据库可能比访问平面文件慢得多。