封鎖 (數據庫)
封鎖是一項用於多用戶同時訪問數據庫的技術,是實現並發控制的一項重要手段,能夠防止當多用戶改寫數據庫時造成數據不一致與衝突。當有一個用戶對數據庫內的數據進行操作時,在讀取數據前先鎖住數據,這樣其他用戶就無法訪問和修改該數據,直到這一數據修改並寫回數據庫解除封鎖為止。詹姆斯·尼古拉·格雷最早完整描述了數據庫鎖。
按照粒度可分為:
- 表鎖(文件鎖)
- 頁鎖(page-level lock)
- 記錄鎖(行鎖,因為SQL標準使用「行」的表述)
按照使用方式分為:
- 互斥鎖(exclusive lock,寫鎖)
- 共享鎖(sharing lock,讀鎖)
一般說來,獲得鎖並不是禁止其他事務對加鎖的數據的讀/寫,而是阻塞了其他事務對這些數據的加鎖操作。例如,如果一般的select語句根本不申請加鎖,所以能直接讀取其他事務已經加了共享鎖的數據。
參考
- 王珊 薩師煊. 数据库系统概论 (M) 4. 北京: 高等教育版社. 2006. ISBN 7-04-019583-6.
這是一篇與資料庫軟體相關的小作品。您可以透過編輯或修訂擴充其內容。 |