哈嘍好久不見吶
最近太忙了都沒時間寫博客,嗚嗚嗚,排名一直沒上升,落後了,今天抽空更新一篇博客吧,順帶漲漲粉,哈哈哈,漲不漲粉不重要,重要的是我想寫博客
往期精選
SQL Server從入門到精通(一)
SQL Server從入門到精通(二)
SQL Server從入門到精通(二)精講
SQL Server從入門到精通(三)
SQL Server從入門到精通(四)
1.事務的概念
事務(TRANSACTION)是:使一個事務內的語句成爲一個整體來執行,作爲單個邏輯工作單元執行的一系列操作作爲一個整體向系統提,要麼都執行、要麼都不執行,事務是一個不可分割的工作邏輯單元在創建存儲過程使用,事務是保證數據完整性的最小的一個單位要不都成功要不都失敗
2.事務的特性(ACID)
原子性:完整的整體,要麼都執行,要麼都不執行
一致性:事務完成時,數據必須處於一致狀態
隔離性:張三和李四的轉賬,王五和趙二的轉賬之間相互獨立
永久性:事務完成後他對數據庫的修改被永久的保存
3.事務分類
(1)顯式事務:又叫用戶定義事務,指用戶執行SQL事務語句而定的事務
1.啓動事務:
通過發出begin transaction語句顯示啓動事務
begin transaction [事務的名稱 @變量] [with mark['描述標記的字符串']]]
2.提交事務
commit transaction[事務的名稱@變量]
或
commit [work]
3.取消事務(回滾事務)
rollback transaction[事務的名稱 @變量|保存點|@保存點變量]
或
rollback work
4.設置事務保存點
save transaction <保存點|@保存點變量>
@保存點變量,必須使用char,varchar,nchar,navrchar數據類型聲明該變量
隱式事務:不需要使用begin transaction語句啓動事務
通過set implicit_transactions on 語句,將隱式事務打開
通過set implicit_transactions off 語句,將隱式事務關閉
自動事務:當一個語句成功執行後,被自動提交。產生錯誤後,被自動回滾
4.事務控制
(1)開始事務:BEGIN TRANSACTION
(2)提交事務:COMMIT TRANSACTION
(3)回滾(撤銷)事務:ROLLBACK TRANSACTION一旦事務提交或回滾,則事務結束
(4)設置事務保存點:
(5)當前事務嵌套:通過全局變量@@TRANCOUNT
使用begin transaction,加1
使用commit,減1
(6)事務處理過程中的錯誤:
具體的例子大家就到書上自己尋找吧,哈哈哈,太懶了,我就不往上寫了
5.事務的相關問題
(1)事務的分類
串行執行方式:
事務1結束執行事務2纔開始執行,是一個接一個執行
系統資源利用率低,對用戶的響應比較慢
併發執行方式:
單處理機執行
可能1沒執行完後2就開始執行
多處理機執行
多個事務同時訪問
數據庫必須進行有效管理
(2)事務併發所產生的問題
數據丟失更新:兩個事務同時一組數據項更新,導致後面的更新覆蓋前面的更新
讀髒數據:一個事務正在讀拎一個更新事務尚未提交的數據
不可重複讀:當一個事務讀取某一個數據後,另一事務對該數據執行了更新操作,使得第一個事務無法再次讀取與前一次相同的結果
(3)解決併發事務的問題的解決方案——封鎖
共享鎖:一個數據對象已存在共享鎖時,其他事務可以讀取數據。但不能修改數據。
排他鎖:他鎖定的資源,其他事物不能讀取也不能修改
更新鎖:在修改操作的初始化階段用來鎖定可能被修改的資源
意向鎖:意向鎖表示一個事務爲了訪問數據庫對象層這些底層資源而加共享鎖或排它鎖的意向
縮寫 | 鎖模式 | 內部代碼 | 描述 |
---|---|---|---|
S | 共享鎖 | 4 | 允許其他進程讀,但不允許修改鎖封的資源 |
X | 排他鎖 | 6 | 阻止其他進程修改或讀取被封鎖的資源 |
U | 更新鎖 | 5 | 阻止其他資源申請更新鎖或排它鎖 |
IS | 意向共享鎖 | 7 | 表示資源的一部分被施加共享鎖,他只能用於表及或頁級 |
IU | 意向更新鎖 | 8 | 表示資源的一部分被施加更新鎖,他只能用於表及或頂級 |
查詢相關鎖信息
sp_lock[[@spid1=]‘spid1’][,[@spid2=] ‘spid2’]
鎖這一塊就不進行詳細講解了因爲看了一下許多資源都沒有詳細講解鎖這一塊估計不重要吧,那我也就偷懶了