是否在现代数据库系统的常规实践中长期锁定记录?

时间:2017-07-16 16:26:55

标签: sql-server locking firedac

问题:在现代数据库系统的常规实践中长期锁定记录吗?

我的理解是在数据库中锁定记录(乐观或悲观)通常是在交易期间非常短的时间。

我现在正在使用的软件会长时间锁定记录:

  • 在用户登录软件的整个时间内,锁定记录在已登录用户的记录中(在ACTIVE_USERS'表中)。

  • 假设USER A正在处理文件。对应于该文件的记录将被锁定,直到USER A保存文件或退出文件。因此,如果某个同事,USER B尝试处理同一个文件,则弹出窗口会显示“您无法处理此文件,因为用户A现在正在处理该文件”。

我致力于实现与Microsoft SQL Server的兼容性的公司希望更改最小化:所以我需要实现这样的锁定机制。我已经攻击了一些正在进行最小化测试的项目,但我不确定它是否符合行业和MSSQL的标准......

1 个答案:

答案 0 :(得分:4)

评论时间有点长。

使用数据库锁定机制进行此应用程序级锁定似乎并不常见。数据库锁可能位于行,页或表级别,它们也会影响索引,因此可能会出现意外的副作用。显然,锁的增加也更容易造成死锁。

通常,应用程序锁定将在记录级别处理。在记录中使用标志(某种类型),应用程序将确保只有一行可以访问该文件。

我想说,它可能会奏效。但我永远不会设计一个这样的系统,我会对意外后果保持警惕。