sql server 事務和鎖的作用


事務

事務就是作為一個邏輯工作單元的SQL語句,如果任何一個語句操作失敗那么整個操作就被失敗,以后操作就會回滾到操作前狀態,或者是上個節點。為了確保要么執行,要么不執行,就可以使用事務。而鎖是實現事務的關鍵,鎖可以保證事務的完整性和並發性。

代碼實例

  數據庫腳本

 

  轉賬事務

數據庫中的鎖也是為了解決在並發訪問時出現各種沖突的一種機制

鎖的目的是什么?

主要解決多個用戶同時對數據庫的並發操作時會帶來以下數據不一致的問題:

  • 丟失更新,同時修改一條數據
  • 讀臟,A修改了數據后,B讀取后A又取消了修改,B讀臟
  • 不可重復讀,A用戶讀取數據,隨后B用戶讀取該數據並修改,此時A用戶再讀取數據時發現前后兩次的值不一致
  • 還有一種是幻讀,這個情況好像不多。

並發控制的主要方法是封鎖,鎖就是在一段時間內禁止用戶做某些操作以避免產生數據不一致

 鎖的粒度有哪些?

  • 數據庫鎖:鎖定整個數據庫,這通常發生在整個數據庫模式改變的時候。
  • 表鎖:鎖定整個表,這包含了與該表相關聯的所有數據相關的對象,包括實際的數據行(每一行)以及與該表相關聯的所有索引中的鍵。
  • 區段鎖:鎖定整個區段,因為一個區段由8頁組成,所以區段鎖定是指鎖定控制了區段、控制了該區段內8個數據或索引頁以及這8頁中的所有數據行。
  • 頁鎖:鎖定該頁中的所有數據或索引鍵。
  • 行或行標識符:雖然從技術上將,鎖是放在行標識符上的,但是本質上,它鎖定了整個數據行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM