在两种数据锁定模型中,更改落实到数据库后均会释放锁。
缺省情况下,Rational ClearQuest 使用乐观锁定。
Rational ClearQuest V7.1 增加了对悲观锁定的支持,这种机制可防止多个用户同时编辑一条记录。通过强制按顺序修改记录,悲观锁定模型确保尝试同时更新同一记录的用户将被锁定。要启用悲观锁定,必须创建功能级别为 7 的模式存储库和相关联的用户数据库或将它们升级到此级别,并且模式制定者还必须将挂钩代码添加到模式内所需的那些记录类型中。有关修改模式的更多信息,请参阅使用 Rational ClearQuest 设计器和 Rational ClearQuest API 参考来制定模式的帮助。
以下各部分更为详细地描述了乐观锁定和悲观锁定之间的差异。
乐观锁定模型(也称为乐观并行控制)是用于关系数据库的不使用记录锁定的并行控制方法。乐观锁定允许多个用户尝试更新同一记录而不通知用户其他用户也正在尝试更新该记录。 仅当落实记录时才会验证记录更改。如果一个用户成功地更新记录,那么尝试落实其并发更新的其他用户将被告知存在冲突。
乐观锁定模型的优点是,它避免了操作过程中锁定记录的开销。如果没有同时进行的更新,那么该模型可使更新快速进行。
当预计并发记录更新并不频繁或锁定开销很大时,乐观锁定是一个很有用的方法。在乐观锁定的 Rational ClearQuest 实现中,如果多个用户同时编辑某记录,那么某个用户的更改落实后,其他用户的更改将被拒绝,且必须保存并手动合并数据冲突。
悲观锁定模型可防止同时对记录进行更新。一旦一个用户开始更新记录,该记录将被锁定。尝试更新该记录的其他用户将被告知另一用户正在进行更新。其他用户必须等待下去,直至第一个用户已落实其更改,从而释放该记录锁为止。仅当此时,另一个用户才能在上一个用户更改的基础上进行更改。
悲观锁定模型的优点是,它通过防止冲突避免了解决冲突的问题。更新是顺序进行的,每个后续的更新都是在上一个用户落实的记录更改的基础上进行的。
如果后续更新可以延迟到上一个更新完成,那么悲观锁定是一个非常有用的方法。 这通常表示更新发生的时间间隔很短。