程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQLServer中的事務和鎖

SQLServer中的事務和鎖

編輯:關於SqlServer

       SQL Server中的事務和鎖

      事務全部是關於原子性(atomicity)的。原子性的概念是指可以把一些事情當作一個單元來看待。從數據庫的角度看,它是指應全部執行或全部不執行的一條或多條語句的最小組合。

      在事務中可以標記的點:

      1. Begin Tran:設置起始點。

      2. Commit Tran:使事務成為數據庫永久的、不可逆轉的一部分。

      3. Rollback Tran:本質上說想要忘記它曾經發生過,即使回滾,回到事務發生之初。

      4. Save Tran:創建一個特定標識符,只運行作部分回滾。

      SQL Server日志的工作方式

      SQL Server中可以鎖定的資源:

      1. 數據庫:鎖定整個數據庫。這通常發生在整個數據庫模式改變的時候。

      2. 表:鎖定整個表。這包含了於該表相關聯的所有數據相關的對象,包括實際的數據行(它們的每一行)以及與該表相關聯的所有索引中的鍵。

      3. 區段:鎖定整個區段。因為一個區段是由8頁組成,所以區段鎖定是指鎖定控制了區段、控制了該區段內的8個數據或索引頁以及8也中的所有數據行。

      4. 頁:鎖定該頁中的所有數據或索引鍵。

      5. 鍵:在索引中的特定鍵或一系列鍵上有鎖。相同索引頁中的其他鍵不受影響。

      6. 行或行標識符(RID):雖然從技術上講:鎖是放在行標識符(它是SQL Server的內部結構)上的,但是本質上是鎖定了整個數據行。

      SQL Server鎖的鎖定模式:

      1. 共享鎖:共享鎖用於只需要讀取數據的時候,也就是不會改變任何內容。

      2. 排他鎖:不能與其他鎖共存。

      3. 更新鎖:更新鎖是共享鎖和排他鎖的混合,是一種特殊的占位符。也就是先共享數據,可以讀取,當需要更改的時候,轉換成排他鎖,就可以有效地防止死鎖了。

      4. 意向鎖(IntentLock):是真正的占位符,用來處理對象層次問題。

      5. 模式鎖(SchemaLock):分為模式修改鎖(對對象模式改變)和模式穩定性鎖定(維持模式穩定)。

      6. 批量更新鎖:允許並行加載數據。

      鎖的兼容性:

    SQLServer中的事務和鎖    三聯

      SQL Server中死鎖的錯誤號:1205

      事務的ACID:

      1. 原子性(Atomicity):事務要麼全部執行,要麼全部不執行。

      2. 一致性(Consistency):需要遵守所有的約束以及其他的數據完整性規則,並且 完全的更新所有相關的對象(數據頁、索引頁)。

      3. 隔離性(Isolation):每一個事務都與其他的任何事務完全的隔離。一個事務不會受到另一個事務動作的干擾。

      4. 持久性(Durability):完成事務後,它的作用結果將永遠存在於系統內。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved