閱讀目錄html
之前老是追求新東西,發現基礎纔是最重要的,今年主要的目標是精通SQL查詢和SQL性能優化。sql
本系列主要是針對T-SQL的總結。編程
【T-SQL基礎】06.透視、逆透視、分組集日誌
【T-SQL基礎】07.數據修改
【T-SQL基礎】09.可編程對象
----------------------------------------------------------
【T-SQL進階】01.好用的SQL TVP~~獨家贈送[增-刪-改-查]的例子
----------------------------------------------------------
【T-SQL性能調優】02.Transaction Log的使用和性能問題
【T-SQL性能調優】03.執行計劃
【T-SQL性能調優】04.死鎖分析
持續更新......歡迎關注我!
本篇主要是對SQL中事務和併發的詳細講解。
爲單個工做單元而執行的一系列操做。如查詢、修改數據、修改數據定義。
(1)顯示定義事務的開始、提交
1 2 3 4 |
|
(2)隱式定義
若是不顯示定義事務的邊界,則SQL Server會默認把每一個單獨的語句做爲一個事務,即在執行完每一個語句以後就會自動提交事務。
(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.使用鎖對各個事務之間正在修改和查詢的數據進行隔離。