从数据库加载大量数据 - 需要考虑什么?

时间:2009-08-11 14:36:32

标签: c# database winforms performance

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

感谢。

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

4 个答案:

答案 0 :(得分:6)

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

例如:假设您有一个包含1,000,000行和20列的表,这些表对用户可见,并且您希望一次在屏幕上显示50行。当您显示数据网格时,您应该只带走这些行的一部分(介于50和几百之间)。这是在Intranet上传输的数据量可以忽略不计,当然也不会影响用户内存。即使您缓存了200行,这仍然是<200KB的数据要本地存储并通过Intranet传输,这需要几毫秒。

答案 1 :(得分:2)

您可能还想考虑报告,审核和安全

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

根据您的要求,您可能需要有关数据如何进入数据库的全面审计跟踪,甚至是谁已经查看过它。

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

答案 2 :(得分:0)

此时仅请求您需要的内容,并仅发回实际更改的内容。人们经常使用ORM并将整个对象从服务器中拉下来。然后他们将整个对象发送回服务器,只有一小部分已经改变。

其中一些取决于您的ORM,但很多都取决于您,以及您如何使用ORM。推测性缓存可能很有用,但只有在您非常确定需要数据时才有用。首先请求尽可能少,然后再开始工作。

答案 3 :(得分:0)

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