【问题标题】:Which one is faster reading an XML file or querying a database [closed]哪个更快读取 XML 文件或查询数据库 [关闭]
【发布时间】:2023-03-17 05:28:02
【问题描述】:

我正在用 C# 设计一个 CMS,需要决定在哪里保存站点的配置设置。还考虑定义我的基本 html 模板,然后在服务器端处理它们以提前创建页面。

那么对于服务器读取 XML 文件或从本地数据库查询相同信息而言,通常更快/更少的开销是什么?

【问题讨论】:

    标签: c# .net asp.net sql-server xml


    【解决方案1】:

    在我看来,这不太可能成为您代码中的瓶颈。您计划多久阅读一次配置设置?配置通常相当很小,而且很少阅读。关于存储位置和存储方式,还有更重要的事情需要考虑:

    • 引导:您可能依赖于您的应用程序可以访问本地文件系统,并且您可以硬编码配置文件名...但是如果您的所有配置都在数据库中,您在哪里配置哪个要与之交谈的数据库?

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

    • 代码读取/处理配置的简单性:您的配置是什么样的?是天生的分层吗?如果是这样,XML 很可能是一个很好的选择。如果它更像是一组名称/值对,那么简单的表就很合适。当然,您可以将 XML 存储在数据库中 - 您没有必须将存储位置和存储格式决定联系在一起。在数据库中编辑 XML 文档可能比编辑 XML 文件或更改单个值更难……但您总是可以使用此类工具让生活变得更轻松。

    【讨论】:

    • 谢谢。我计划采用混合方法将数据放入本地文件,并将一些数据放入数据库。我想我会根据答案完全使用数据库存储。我正在构建的应用程序将有一个为其编码的安装程序,它将处理数据库设置和初始 web.config 设置。
    【解决方案2】:

    仅用于服务器设置 - 真的没关系。你只会读一次。即使需要几秒钟,也不会引起注意。

    先测量,然后优化。

    【讨论】:

      【解决方案3】:

      一根绳子有多长?我可以编写比从 XML 文件读取相同数据慢得多的数据库查询,但我也可以编写查询比读取数据库慢得多的 XML 文件。

      我会说,如果您正在显示“大部分”静态内容并且您担心性能,那么以您认为最简单的任何方式实现它可能是一个更好的主意,然后使用缓存机制它的性能很高 - 这样,第一次访问可能会“慢”,但后续访问会快得多。

      通常,如果您正在生成 HTML 内容,请将完成的 HTML 写入磁盘并将其发送到浏览器,而不是在后续请求中从数据库/XML 文件中填充它。如果您让后端进程在更新内容时删除缓存文件,则服务器可以自动检测文件何时不存在并重新生成。

      【讨论】:

        【解决方案4】:

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

        如果你走数据库路线,你会缓存你的结果吗?如果您不断地从数据库中提取详细信息,则可能会有很多网络喋喋不休。

        就简单性而言,您确实可以不知道使用 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

        【讨论】:

          【解决方案5】:

          如果您最重要的一点是速度,那么请使用数据库。 xml 很慢。

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

          【讨论】:

          • 如果通过互联网访问数据库会怎样? XML 文件只有 10 行长并且是本地的?你不能假设 XML 比数据库慢,这个问题定义得不够好
          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-09-14
            • 1970-01-01
            • 1970-01-01
            • 2011-12-10
            • 2021-05-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多