【问题标题】:Optimistic Concurrency Issue and Improving Solutions乐观并发问题及改进方案
【发布时间】:2011-03-19 10:39:35
【问题描述】:

在我们的数据库中,我们有巨大的表格(最初是在 20 年前构建的)。我们正在开发它。

一些表包含rowversion 和乐观并发。我们想知道是否有办法将rowversion 与某些特定 列的修改相对应,但不是全部。在正常情况下,随后生成的 T-SQL 将是巨大的。

有什么建议吗?

【问题讨论】:

  • 我在一个分布式系统上工作过,该系统每天增长超过 0.5 TB(在分布式系统负载方面并不完全如此)。你说的比这更大吗?
  • 不,少于那个。无论如何,谁关心大小,我关心的是自动生成的 T-SQL 的数量,这在我看来是不必要的!喷!你能描述一下那个系统的功能吗?是在制造引气炸弹还是什么?
  • 它是实时搜索上的数据挖掘引擎(我在它变成 Bing 之前不久就离开了)。

标签: .net vb.net sql-server-2005


【解决方案1】:

rowversion 用于optimistic locking 的地方是什么方法?

标准技巧是在读取行值时读取rowversion。稍后,在更新时,您确保数据库中的rowversion 与您上次看到时的行版本匹配。如果没有,那么您知道其他人修改了您下方的行:

UPDATE Customers
SET Firstname = 'Faulty', Lastname = 'Orc', ...
WHERE CustomerID = 624429
AND rowversion = @rowversion

您只需要更新您要更新的列。

您是否想要多个人独立地对同一行进行更改?在那种情况下,不,你不能那样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    相关资源
    最近更新 更多