问题:在现代数据库系统的常规实践中长期锁定记录吗?
我的理解是在数据库中锁定记录(乐观或悲观)通常是在交易期间非常短的时间。
我现在正在使用的软件会长时间锁定记录:
在用户登录软件的整个时间内,锁定记录在已登录用户的记录中(在ACTIVE_USERS'表中)。
假设USER A正在处理文件。对应于该文件的记录将被锁定,直到USER A保存文件或退出文件。因此,如果某个同事,USER B尝试处理同一个文件,则弹出窗口会显示“您无法处理此文件,因为用户A现在正在处理该文件”。
我致力于实现与Microsoft SQL Server的兼容性的公司希望更改最小化:所以我需要实现这样的锁定机制。我已经攻击了一些正在进行最小化测试的项目,但我不确定它是否符合行业和MSSQL的标准......
答案 0 :(得分:4)
评论时间有点长。
使用数据库锁定机制进行此应用程序级锁定似乎并不常见。数据库锁可能位于行,页或表级别,它们也会影响索引,因此可能会出现意外的副作用。显然,锁的增加也更容易造成死锁。
通常,应用程序锁定将在记录级别处理。在记录中使用标志(某种类型),应用程序将确保只有一行可以访问该文件。
我想说,它可能会奏效。但我永远不会设计一个这样的系统,我会对意外后果保持警惕。