跳至內容

封鎖 (數據庫)

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

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

按照粒度可分為:

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

按照使用方式分為:

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

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

參考

  • 王珊 薩師煊. 数据库系统概论 (M) 4. 北京: 高等教育版社. 2006. ISBN 7-04-019583-6.