封鎖 (資料庫)

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

封鎖是一項用於多使用者同時訪問資料庫的技術,是實現並行控制的一項重要手段,能夠防止當多使用者覆寫資料庫時造成資料不一致與衝突。當有一個使用者對資料庫內的資料進行操作時,在讀取資料前先鎖住資料,這樣其他使用者就無法訪問和修改該資料,直到這一資料修改並寫回資料庫解除封鎖為止。詹姆斯·尼古拉·格雷最早完整描述了資料庫鎖。

按照粒度可分為:

  • 表鎖(檔案鎖
  • 頁鎖(page-level lock)
  • 記錄鎖(行鎖,因為SQL標準使用「行」的表述)

按照使用方式分為:

  • 互斥鎖(exclusive lock,寫鎖)
  • 共享鎖(sharing lock,讀鎖)

一般說來,獲得鎖並不是禁止其他事務對加鎖的資料的讀/寫,而是阻塞了其他事務對這些資料的加鎖操作。例如,如果一般的select語句根本不申請加鎖,所以能直接讀取其他事務已經加了共享鎖的資料。

參考[編輯]