SQL Server中的事務和鎖

來源:互聯網
上載者:User

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.      批次更新鎖:允許並行載入資料。

鎖的相容性:


SQL Server中死結的錯誤號碼:1205

事務的ACID:

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

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

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

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

 


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.