【问题标题】:Populate large data from database从数据库中填充大量数据
【发布时间】:2010-10-10 17:31:09
【问题描述】:
我开发了一个 3 层应用程序,但在从数据库中填充数据时遇到了问题。我的应用程序有一个从数据库查询大数据的窗口,这个过程需要很长时间。 (我的客户端离服务器很远,它之间的连接是 128 KB/s)。
然后我想出了解决这个问题的办法。解决方案是每 y 秒填充 x 条数据记录。 (例如:先填充 10 条记录以在 UI 上显示,然后每 5 秒再显示 10 行)。
这是解决这个问题的好方法吗?有没有更好的方法来解决这个问题?
【问题讨论】:
标签:
.net
sql-server
n-tier-architecture
【解决方案1】:
是否可以选择延迟加载(这样您可以按需加载数据,而不是一次全部加载)?
【解决方案2】:
如果应用程序 UI 允许,也许可以在多个页面中显示记录。
我还建议使用异步调用来检索数据,这样您就不会在查询时冻结应用程序(如果是桌面应用程序)。
如果是 Web 应用,请考虑使用 AJAX。
【解决方案3】:
如果是出于显示目的,您应该使用分页。这有一个变体,当用户尝试使用滚动条访问更多信息时,UI 会抓取下一个“页面”记录。
如果您需要聚合数据,请在查询中进行,这样整个数据就不会通过网络传播。
如果您真的/绝对必须获取整个数据并对其进行一些处理,请考虑它是否太大而无法一次加载。在这种情况下,抓取数据块,运行相关进程,然后抓取另一个块(依此类推)。无论如何,您需要使用一种不会阻塞 UI(线程/异步操作)的方法。
【解决方案4】:
Freddy 打败了我,但举个例子,您会注意到很多数据库查看器只填充视野所需的数据,当您使用滚动条时,它会自动抓取下一页/数据视图.
如果您考虑网站,它们几乎总是会分页数据,而不是一次性加载所有数据。