任何人都可以使用故意共享锁提供一个简单的数据库事务示例吗?如果是这样,那就是使用故意排他锁。
答案 0 :(得分:4)
需要意图锁,因为锁管理器不了解锁定实体的物理结构。如果一个事务S锁定一个记录,比如R1,另一个事务要求在页面上进行X锁定,比如P1,如果R1实际位于P1上会发生什么?在R1发布之前,锁管理器不应该遵守P1请求,但是为了这样做,它必须理解R1包含在P1中。
由于锁管理器显然无法知道锁定对象的结构细节,因此引入了意图锁。第一个事务将在P1上放置一个IS锁,然后在R1上放置一个S锁。当第二个事务请求P1上的X锁定时,它将与第一个事务所放置的IS锁定冲突。