代码之家  ›  专栏  ›  技术社区  ›  sproketboy

我什么时候应该关注交易规模?

sql
  •  1
  • sproketboy  · 技术社区  · 17 年前

    我有一个功能,我们需要合并用户记录。用户选择要保留的用户和要放弃的用户。

    UPDATE (Table) set UserNo=(userToKeep) WHERE UserNo=(userToDiscard)

    然后删除userToDiscard及其用户Pref(118)。

    我应该担心交易规模吗?这是MS-SQL 2005。

    我能做点什么吗?

    4 回复  |  直到 17 年前
        1
  •  3
  •   Tom H zenazn    17 年前

    如果在每个表中都有用户ID的索引(我认为这是很自然的事情),那么即使有59个表,执行这些更新和删除也不会花费太长时间。如果你一周只合并几次用户,那么像这样的一点小问题就不成问题了。在最坏的情况下,有人必须多等几秒钟才能每周做一两次。

    另一种选择是将这些用户合并请求保存在一个表中,并在夜间进程中执行实际工作(或者在应用程序处于“非工作时间”时)。您需要向应用程序的用户明确说明合并不会立即生效。您还需要考虑许多可能的意外情况:如果同一个用户在当晚被设置为与两个不同的用户合并,会怎么样,等等。

        2
  •  0
  •   Mitch Wheat    17 年前

    这取决于用户表的大小,以及索引的位置。

        3
  •  0
  •   Alexander Lebedev    17 年前

    合并用户听起来不像是经常使用的功能。考虑到这一点,您有98%的可能性不必担心事务大小(保留2%以备可能的死锁)

        4
  •  0
  •   Plasmer    17 年前

    知道每个表中将更新多少行吗?如果每个用户在一个表中可以有数百万行,那么您可能需要比在每个表中有少量行时更加小心。