读取XML文件和查询数据库,哪个更快?

15

我正在使用C#设计一个CMS,需要决定将网站的配置设置保存在哪里。同时考虑定义我的基本HTML模板,并在服务器端处理它们以提前创建页面。

那么对于服务器而言,从XML文件中读取信息还是从本地数据库查询同样的信息,一般哪种方式更快/开销更小?

6个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
11

我认为这不太可能成为代码中的瓶颈。您计划多频繁读取配置设置?配置通常非常小,且读取不频繁。有更重要的事情需要考虑,例如存储位置和方式:

  • 引导:您可能可以依靠应用程序访问本地文件系统,并硬编码配置文件名...但如果所有配置都在数据库中,那么您在哪里配置要连接哪个数据库?

  • 易于调整和部署:通过手动在服务器上编辑配置文件可能比在数据库中进行更快的更改...但如果您有多个服务器,您是否想在每个服务器上调整一个文件?

  • 简单的代码阅读/处理配置:您的配置会是什么样子?它是否自然层次化?如果是,则 XML 可能很合适。如果更像一组名称/值对,则简单的表格很适合。当然,您可以将 XML 存储在数据库中-您不必将存储位置和存储格式决策绑定在一起。在数据库中编辑 XML 文档可能比编辑 XML 文件或更改单个值更难...但是您始终可以借助此类工具来简化生活。


谢谢。我原本计划采用混合方法,将数据存储到本地文件和数据库中。但考虑到大家的建议,我决定完全采用数据库存储。我正在构建的应用程序将有一个安装程序,它将处理数据库设置和初始web.config设置。 - Adrian

3

只是服务器设置 - 真的不重要。你只需要阅读一次。即使需要几秒钟,也不会被注意到。

先衡量,再优化。


2
一条字符串有多长?我可以编写一个数据库查询,比从XML文件中读取相同数据的速度要慢得多,但我也可以编写一个查询速度比读取数据库慢得多的XML文件。 如果你正在显示“大部分”静态内容并担心性能问题,那么最好的做法可能是以你认为最简单的方式实现它,然后使用缓存机制使其具有良好的性能-这样,第一次访问可能会“慢”,但随后的访问将会快得多。 通常,如果你正在生成HTML内容,请将完成的HTML写入磁盘并将其发送到浏览器,而不是在后续请求中从数据库/XML文件中填充它。如果你的后端进程在更新内容时删除了缓存文件,则服务器可以自动检测到该文件不存在并重新生成它。

1

这取决于您将采用的访问数据的策略。

如果您选择使用数据库,那么您是否会缓存结果?如果您不断地从数据库中提取详细信息,可能会产生大量的网络通信。

就简单性而言,您可以使用Linq对数据源进行无差别处理。

更快吗? 一旦数据在内存中,就不应该有任何区别。正如另一个帖子指出的那样,配置信息通常是相当静态的。为什么不创建一个控制台应用程序,并通过使用分析器来量化差异呢?

http://www.red-gate.com/products/ants_performance_profiler/index.htm?utm_source=google&utm_medium=cpc&utm_content=brand_aware&utm_campaign=antsperformanceprofiler&gclid=CLXmzbLXnKMCFQs-lAodSXTGsQ


0

如果速度是您最重要的考虑因素,那么请使用数据库。XML 的速度非常慢。

但是,如果您的数据非常“复杂”或具有许多不同的关系和属性,请考虑使用 XML。


3
如果数据库通过互联网访问,而XML文件只有10行且是本地的,你不能假设XML比数据库更慢,问题没有定义得足够清楚。 - Kieren Johnstone

0

在这里,我会默认使用数据库。 它更快,需要的代码更少。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,