【问题标题】:Where should I store a million-record array?我应该在哪里存储百万记录数组?
【发布时间】:2011-09-20 02:50:18
【问题描述】:

我有一个关于优化和应用程序设计领域的问题。 我正在使用 asp.net 和 sql server 构建一个 Web 应用程序。

在我的一个屏幕中,我必须执行一个生成随机数量的用户 ID 的操作。我向观众展示了一些关于所选用户的统计数据。如果观众喜欢我想保存的统计数据。

所以基本上我需要保存临时随机数据,如果用户喜欢它,请保留它。

我应该将生成的 id 存储在数据库中还是应该将它们存储在会话中?

【问题讨论】:

  • 标题非常具有误导性,与您的实际问题无关。
  • 这是相关的,因为数组的大小隐含很大。

标签: asp.net optimization random


【解决方案1】:

好吧,既然您正在生成随机 id,那么您正在使用某种伪随机生成器。您是否考虑过仅为该生成器存储种子的可能性?我最近有一个类似的问题。事实上,非常相似。看看:

My Post about Random(int seed)

编辑:在 cmets 中,您建议您希望在 SQL 服务器上执行大部分此操作。看看下面的帖子。此外,您可能需要考虑添加新用户的特殊情况,而您的管理员或其他任何人都在考虑他是否“喜欢”保存它。在这种情况下,您需要在发出请求时额外存储用户数量,并相应地调整您的随机选择功能。在更特殊的删除用户的情况下,这种方法无疑是没有用的。

Seeding SQL

【讨论】:

  • 我实际上是在使用sql查询来生成随机Id,在t-sql中你可以通过添加“order by newId”子句来实现。
【解决方案2】:

这取决于您的情况和要求。如果您将数据存储在会话中,那很好,但是一旦会话被放弃或结束,您将丢失数据。但是,如果这不重要,这意味着您不想永远将数据保留在那里,那么存储在会话中(临时)会更好。但是您需要研究性能问题,特别是如果多个用户同时执行相同的操作,这会降低性能。

如果您选择存储在数据库中,那么这也可以,但您需要再次决定启用或禁用 ViewState,以提高性能。

【讨论】:

    【解决方案3】:

    如果我必须这样做,我将数据存储在 sql 中的临时表中,该表将在每个页面加载事件中删除并重新创建,我在网格中显示数据,其中可以从选定的用户 ID 中删除和保存

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2019-04-25
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多