封鎖_(數據庫)

封鎖是一項用於多用戶同時訪問數據庫的技術 ， 是實現併發控制的一項重要手段 ， 能夠防止當多用戶改寫數據庫時造成數據不一致與衝突 。 當有一個用戶對數據庫內的數據進行操作時 ， 在讀取數據前先鎖住數據 ， 這樣其他用戶就無法訪問和修改該數據 ， 直到這一數據修改並寫回數據庫解除封鎖爲止 。 詹姆斯 · 尼古拉 · 格雷最早完整描述了數據庫鎖 。 按照粒度可分爲 ： 表鎖 （ 文件鎖 ） 頁鎖 （ page - level lock ） 記錄鎖 （ 行鎖 ， 因爲SQL標準使用 “ 行 ” 的表述 ） 按照使用方式分爲 ： 互斥鎖 （ exclusive lock ， 寫鎖 ） 共享鎖 （ sharing lock ， 讀鎖 ） 一般說來 ， 獲得鎖並不是禁止其他事務對加鎖的數據的讀 / 寫 ， 而是阻塞了其他事務對這些數據的加鎖操作 。 例如 ， 如果一般的select語句根本不申請加鎖 ， 所以能直接讀取其他事務已經加了共享鎖的數據 。