2009-11-25 93 views
1

任何人都可以使用Intentional Shared鎖給出一個簡單的數據庫事務示例嗎?如果是這樣,一個使用故意排他鎖。IS(意向共享)鎖

+0

這功課嗎? – 2009-11-25 03:01:00

+0

Nop。只是我不明白如何實現這個概念。我清楚地瞭解共享鎖和獨佔鎖,但沒有看到「故意」鎖的需要。一個例子會有幫助。 – Sheldon 2009-11-25 03:11:58

回答

3

意向鎖是需要的,因爲鎖管理器不理解鎖定實體的物理結構。如果一個事務S鎖定了一條記錄,比如說R1,而另一個事務要求在頁面上有一個X鎖,那麼說P1,如果R1實際上位於P1上,會發生什麼?在R1被釋放之前,鎖管理器不應該遵守P1請求,但是爲了這樣做,它必須理解R1被包含在P1中。

由於鎖管理器顯然無法知道鎖定對象的結構細節,因此引入了意向鎖。第一筆交易將在P1上放置一個IS鎖,然後在R1上放置一個S鎖。當第二個事務請求P1上的X鎖時,它將與第一個事務放置的IS鎖衝突。

+0

謝謝你Remus! – Sheldon 2009-11-25 05:13:45

+0

因此,Intent鎖定不是鎖定的,但是定義某些數據的方法可以被鎖定或不鎖定,如果可以,如何鎖定?作爲一個自上而下的樹,三個粒度更大。 – Sheldon 2009-11-25 05:15:41

+1

從鎖管理器的角度來看,鎖有四種類型:IS,IX,S,X(忽略U鎖和其他類型)。 LM將它們全部理解爲鎖,並且具有兼容性矩陣,使得IS-IX和IX-IX兼容(但不是S-IX,X-IS和X-IX)。 '訪問者'(理解層次結構樹的結構)將在樹中導航,請求在鎖定狀態下進行鎖定,直到找到它請求S或X鎖的實際利益項。 – 2009-11-25 05:22:47