Sql-Server

為什麼 SQL Server 沒有列級鎖定?

  • May 28, 2020

據我所知,最低級別的鎖定是行級的

但是我看不出它不能具有列級鎖定的原因

假設 2 個查詢同時更新 2 個不同的列。

那麼為什麼它不能發生呢?為什麼每次更新都必須至少鎖定行級?

這種行為告訴我應該將表拆分為較小的表,這樣會發生較少的行級鎖定

我不正確嗎?

此功能可能存在。它會消耗資源並使架構複雜化。所以這是一個必須做出的權衡。

出於同樣的原因,一些數據庫的方向相反:它們鎖定在頁面或表級別。MongoDB 甚至為整個數據庫設置了全域寫鎖!這無疑使一些物理實現問題變得更加容易。

SQL Server 的鎖定模型已經非常複雜,並且根據我的經驗,它很好地解決了實際場景。我不確定列級鎖定是否會使它成為更好的產品(即使開發人員的時間對 Microsoft 來說是免費的)。

有幾次我認為需要列級鎖定,後來我意識到這是一個糟糕的模式設計。需要鎖定的列應該放在單獨的表中。

引用自:https://dba.stackexchange.com/questions/147179