30分鐘全面解析-SQL事務+隔離級別+阻塞+死鎖

閱讀目錄html

 之前老是追求新東西,發現基礎纔是最重要的,今年主要的目標是精通SQL查詢和SQL性能優化。sql

 本系列主要是針對T-SQL的總結。編程

【T-SQL基礎】01.單表查詢-幾道sql查詢題性能優化

【T-SQL基礎】02.聯接查詢併發

【T-SQL基礎】03.子查詢函數

【T-SQL基礎】04.表表達式-上篇性能

【T-SQL基礎】04.表表達式-下篇優化

【T-SQL基礎】05.集合運算spa

【T-SQL基礎】06.透視、逆透視、分組集日誌

【T-SQL基礎】07.數據修改

【T-SQL基礎】08.事務和併發

【T-SQL基礎】09.可編程對象

----------------------------------------------------------

【T-SQL進階】01.好用的SQL TVP~~獨家贈送[增-刪-改-查]的例子

 ----------------------------------------------------------

【T-SQL性能調優】01.TempDB的使用和性能問題

【T-SQL性能調優】02.Transaction Log的使用和性能問題

【T-SQL性能調優】03.執行計劃

【T-SQL性能調優】04.死鎖分析

持續更新......歡迎關注我!

回到頂部

概述:

本篇主要是對SQL中事務和併發的詳細講解。

回到頂部

1、事務

1.什麼是事務

爲單個工做單元而執行的一系列操做。如查詢、修改數據、修改數據定義。

2.語法

(1)顯示定義事務的開始、提交

1

2

3

4

BEGIN TRAN

INSERT INTO b(t1) VALUES(1)

INSERT INTO b(t1) VALUES(2)

COMMIT TRAN

(2)隱式定義

若是不顯示定義事務的邊界,則SQL Server會默認把每一個單獨的語句做爲一個事務,即在執行完每一個語句以後就會自動提交事務。

3.事務的四個屬性ACID

(1)原子性Atomicity

1.事務必須是原子工做單元。事務中進行的修改,要麼所有執行,要麼全都不執行;

2.在事務完成以前(提交指令被記錄到事務日誌以前),系統出現故障或從新啓動,SQL Server將會撤銷在事務中進行的全部修改;

3.事務在處理中遇到錯誤,SQL Server一般會自動回滾事務;

4.少數不太嚴重的錯誤不會引起事務的自動回滾,如主鍵衝突、鎖超時等;

5.可使用錯誤處理來捕獲第4點提到的錯誤,並採起某種操做,如把錯誤記錄在日誌中,再回滾事務;

6.SELECT @@TRANCOUNT可用在代碼的任何位置來判斷當前使用SELECT @@TRANCOUNT的地方是否位於一個打開的事務當中,若是不在任何打開的事務範圍內,則該函數返回0;若是在某個打開的事務返回範圍內,則返回一個大於0的值。打開一個事務,@@TRANCOUNT=@@TRANCOUNT+1;提交一個事務,@@TRANCOUNT-1。

 

(2)一致性Consiitency

1.同時發生的事務在修改和查詢數據時不發生衝突;

2.一致性取決於應用程序的須要。後面會講到一致性級別,以及如何對一致性進行控制。

 

(3)隔離性Isolation

1.用於控制數據訪問,確保事務只訪問處於指望的一致性級別下的數據;

2.使用鎖對各個事務之間正在修改和查詢的數據進行隔離。

相關文章
相關標籤/搜索