【问题标题】:Alternative to transaction lock事务锁的替代方案
【发布时间】:2012-04-05 02:11:43
【问题描述】:

在我的项目中,我正在使用开始事务提交或回滚更改。但这会导致锁定该特定功能中的表。

因此,如果任何其他用户执行任何其他功能,则这些锁定的表在事务完成之前不可用。

我想知道是否有任何替代事务可以确保数据安全但表没有被锁定。

【问题讨论】:

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


    【解决方案1】:

    不,事务是确保数据库中数据一致性的方法。但是,它们通常不应导致整个表对其他用户“锁定”。在 Oracle 中,默认情况下,锁只放置在正在更新的行上。

    【讨论】:

    • SQL Server 确实会锁定表,或者至少会锁定。不知道他们最近是否有所改善。我不确定 OP 的要求是什么,因为这个问题同时被标记为 Oracle 和 SS-2005。
    • 我知道 SQL Server 可以“升级”到表级锁,但大概这不是常态,或者任何重要的数据库都不会工作,不是吗?例如一个用户更新一个订单行,在他们的交易完成之前不能以任何方式处理其他订单行?!
    • 我知道 Tom Kyte 在他的一本书中谈到了这一点,以及行级锁定如何经常导致页面锁定,这可以有效地阻止其他 SQL,包括如果他们需要该页面的选择。我真的对 OP 根据标签要求的内容更加困惑。
    • @DCookie :该系统与平台 sql 和 oracle 一起使用,因此我标记了两者。所以提供的任何解决方案都应该适用于两者。希望这能消除您的困惑。
    • @DCookie:正如你所说——行级锁定通常会导致页面锁定,这可以有效地阻塞其他 SQL ..这正是我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2018-11-09
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多