【问题标题】:Loading huge amount of data from database - what to consider?从数据库加载大量数据 - 需要考虑什么?
【发布时间】:2009-08-11 14:36:32
【问题描述】:

我正在 Winforms 中构建一个应用程序。这将与 DB(oracle) 对话并加载大量数据(仅用于查看)。除了缓存和分页,还有其他需要考虑的地方吗?性能是一个问题,但考虑到用户机器上的内存有限也是一个问题。

谢谢。

编辑 - 附加信息:我还可以选择构建一个 java soap 服务来充当中间层。这会有帮助吗?

【问题讨论】:

  • 我不知道您要做什么,但我仍然会提供此评论。我认为数据库是一个图书馆。它比我的书架更重要,我需要在那里分享物品,而且它在不断变化。每次我去那里旅行都很痛苦,所以我试着在一次旅行中得到我需要的一切。但是,我不想一次将整个图书馆带回家。需要有一个平衡。

标签: c# database winforms performance


【解决方案1】:

如果您正在分页,则没有理由“通过网络”传输大量数据。您只需要查询当时正在查看的数据,可能还需要查询下一页以缓存用户性能。

例如:假设您有一个用户可见的包含 1,000,000 行和 20 列的表,并且您希望一次在屏幕上显示 50 行。当您显示数据网格时,您应该只带入这些行的一部分(大约在 50 到几百之间)。在 Intranet 上传输的数据量可以忽略不计,当然不会影响用户内存。即使您缓存 200 行,这仍然是

【讨论】:

  • 在数据库中分页可能是一个不错的选择,如果:(1) 返回的数据集有序,(2) 波动性相对较低,并且 (3) 获取数据的成本较低第 N 页项目。
  • 谢谢,但我对分贝不太了解。你能告诉我更多或指向任何链接吗?
  • 您如何访问您的 Oracle 数据库?
【解决方案2】:

您可能还需要考虑报告、审计和安全性。

通常用户不会翻阅一百万行,而是使用某种报告来汇总或查询信息。

根据您的要求,您可能需要对数据如何进入您的数据库,甚至谁查看过数据进行全面的审计跟踪。

最后,您可能需要确保只有有效用户才能看到相关数据。 这可能会影响您的数据库结构,并且几乎肯定会影响您的应用程序架构。

【讨论】:

    【解决方案3】:

    只请求你目前需要的,只发回真正改变的。人们经常使用 ORM,只是将整个对象从服务器上拉下来。然后他们将整个对象发送回服务器,而其中只有一小部分发生了变化。

    其中一些取决于您的 ORM,但很多取决于您以及您如何使用 ORM。推测性缓存可能很有用,但前提是您非常确定您将需要数据。从尽可能少的请求开始,然后再努力。

    【讨论】:

      【解决方案4】:

      如果您需要执行多项选择来构建数据模型,而不是在存储过程中完成所有工作。这将减少网络流量,并让 Oracle 做它擅长的事情。祝你好运。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-18
        • 1970-01-01
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多