不同資料庫廠商對 Lock 的處理各有其獨特的方式,其目的是為了保護資料的正確性,常見的 Lock 方式有:
- Shared Lock:表示資料已經被 Transaction 讀取,該資料允許其他 Transaction 做讀取動作,但是不允許更改資料。
- Exclusive Lock:表示資料已經被 Transaction 更改,該資料不允許其他 Transaction 做讀取或更改動作。
另外 Lock 的範圍也因資料庫的不同而有不同的範圍,也就是說當 Lock 發生時會影響到的相關資料的範圍,可能的方式有下列幾種:
- Database Level Lock:當發生 Lock 時整個 Database 都會受影響,換句話說當有人要寫入資料時,所有的使用者都不可以使用了。這種架構現在應該不容易見到了。
- Table Level Lock:以 Table 為 Lock 的單位。
- Page Level Lock:以資料庫內部資料存放的單位為 Lock 的單位。
- Row Level Lock:以單筆資料為 Lock 的單位。
- Column Level Lock:以欄位資料為 Lock 的單位,以目前電腦的執行效能,不太容易變成一個可用的商業產品。
上述不同的 Lock Level 主要會影響的是:同一時間的資料庫使用人數,及系統資源消耗的狀況,所以實務上資料庫廠商通常會提供的是 Table、Page、Row 等 Level Lock 的功能。
哪一種 Lock Level 會比較好是不一定的,完全取決與應用系統實際上的需求。
本則專題由飛達客工作室提供