C# 基于文件系统的读取与简单的数据库查询?

C# 基于文件系统的读取与简单的数据库查询?,c#,file-io,comparison,kentico,C#,File Io,Comparison,Kentico,我们使用的CMS称为Kentico,它在文件系统上存储媒体库文件,并在数据库中存储文件元数据标题、描述等记录。。当您使用媒体库控件列出这些项目时,它将从文件系统读取文件以显示它们。从文件系统读取比查询数据库快吗?或者在媒体文件元数据数据库表上运行简单查询会更快吗 假设: Kentico是一个ASP.NET应用程序,因此代码是用C编写的。他们使用简单的数据集来传递数据。 只有元数据才能从直接文件(如文件名和大小)中读取。 每个文件夹最多100个文件。 数据库查询将被正确索引。 该查询类似于: 挑选

我们使用的CMS称为Kentico,它在文件系统上存储媒体库文件,并在数据库中存储文件元数据标题、描述等记录。。当您使用媒体库控件列出这些项目时,它将从文件系统读取文件以显示它们。从文件系统读取比查询数据库快吗?或者在媒体文件元数据数据库表上运行简单查询会更快吗

假设:

Kentico是一个ASP.NET应用程序,因此代码是用C编写的。他们使用简单的数据集来传递数据。 只有元数据才能从直接文件(如文件名和大小)中读取。 每个文件夹最多100个文件。 数据库查询将被正确索引。 该查询类似于:

挑选* 从媒体文件 其中文件路径类似于“Path/To/Current/Media/Folder/%”


简而言之,这取决于许多可变因素,但文件系统的速度通常比数据库快

较长的答案是:在已知位置扫描本地文件系统通常是很快的,因为资源离家很近,而计算机的设计可以非常高效地执行这些操作


但是,它是否比数据库快取决于数据库实现、它位于何处以及我们谈论的数据量。总体而言,DBMS经过优化,可以非常有效地存储和查询大型数据集,而平面文件系统只能以硬件运行的速度扫描驱动器。它们的速度取决于实现SqLite总体上不会像MS Sql Server或Oracle那样快,通过网络传输文件的通信方案是计算机经常做的最慢的事情;相比之下,命名管道提供了非常快速的进程间通信,并且您向它投入的硬件数量—一台带有SATA-RAID条带的四元Xeon刀片服务器将比您的Celeron笔记本电脑快得多。

除了其他人在这里所说的,缓存也可以发挥作用,这取决于您的缓存设置。不要忘记考虑这些因素,因为Kentico、SQL和IIS都有许多不同级别的缓存,并且根据您的设置、配置和正在优化的用例在不同的时间使用

当谈到这一级别的性能问题时,答案通常是:这取决于。因此,对您自己的解决方案进行基准测试,看看哪一个解决方案在您特定用户的情境需求中最有帮助

Kentico确实发布了两个性能指南,另一个可能会有所帮助,但在您亲自测试之前,他们仍然不会给您一个明确的答案