欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

MS SQL 事務的概念

系統 1829 0

SQL Server事務全攻略(一)

一 事務的屬性

  事務具有ACID屬性,即 Atomic原子性,Consistent一致性, Isolated隔離性, Durable永久性

?

  原子性

  就是事務應作為一個工作單元,事務處理完成,所有的工作要么都在數據庫中保存下來,要么完全?
回滾,全部不保留

  一致性

  事務完成或者撤銷后,都應該處于一致的狀態

  隔離性

  多個事務同時進行,它們之間應該互不干擾.應該防止一個事務處理其他事務也要修改的數據時,?
不合理的存取和不完整的讀取數據

  永久性

  事務提交以后,所做的工作就被永久的保存下來

二 事務并發處理會產生的問題

  丟失更新

  當兩個或多個事務選擇同一行,然后基于最初選定的值更新該行時,會發生丟失更新問題、?
每個事務都不知道其它事務的存在。最后的更新將重寫由其它事務所做的更新,這將導致數據丟失。

  臟讀

  當第二個事務選擇其它事務正在更新的行時,會發生未確認的相關性問題。第二個事務正在讀取的數據還沒有確認并且可能由更新此行的事務所更改。

  不可重復讀

  當第二個事務多次訪問同一行而且每次讀取不同的數據時,會發生不一致的分析問題。不一致的分析與未確認的相關性類似,因為其它事務也是正在更改第二個事務正在讀取的數據。然而,在不一致的分析中,第二個事務讀取的數據是由已進行了更改的事務提交的。而且,不一致的分析涉及多次(兩次或更多)讀取同一行,而且每次信息都由其它事務更改;因而該行被非重復讀取。

  幻像讀

  當對某行執行插入或刪除操作,而該行屬于某個事務正在讀取的行的范圍時,會發生幻像讀問題。事務第一次讀的行范圍顯示出其中一行已不復存在于第二次讀或后續讀中,因為該行已被其它事務刪除。同樣,由于其它事務的插入操作,事務的第二次或后續讀顯示有一行已不存在于原始讀中。

三 事務處理類型

  自動處理事務

  系統默認每個T-SQL命令都是事務處理 由系統自動開始并提交

  隱式事務

  當有大量的DDL 和DML命令執行時會自動開始,并一直保持到用戶明確提交為止,切換隱式事務可以用SET? IMPLICIT_TRANSACTIONS? 為連接設置隱性事務模式.當設置為 ON 時,SET IMPLICIT_TRANSACTIONS 將連接設置為隱性事務模式。當設置為 OFF 時,則使連接返回到自動提交事務模式

  用戶定義事務

  由用戶來控制事務的開始和結束 命令有: begin tran commit tran rollback tran 命令

  分布式事務

  跨越多個服務器的事務稱為分布式事務,sql server 可以由DTc microsoft distributed transaction coordinator?
來支持處理分布式事務,可以使用 BEgin distributed transaction 命令啟動一個分布式事務處理

?

四 事務處理的隔離級別

  使用SET TRANSACTION ISOLATION LEVEL來控制由連接發出的所有語句的默認事務鎖定行為

  從低到高依次是 READ UNCOMMITTED

  執行臟讀或 0 級隔離鎖定,這表示不發出共享鎖,也不接受排它鎖。當設置該選項時,可以對數據執行未提交讀或臟讀;在事務結束前可以更改數據內的數值,行也可以出現在數據集中或從數據集消失。該選項的作用與在事務內所有語句中的所有表上設置 NOLOCK 相同。這是四個隔離級別中限制最小的級別。

  舉例,設table1(A,B,C)

A ?B C
a1 ?b1 ?c1
a2 ?b2 c2
a3 ?b3 ?c3

  新建兩個連接

  在第一個連接中執行以下語句?

              
select * from table1 begin tran update table1 set c = ' c ' select * from table1 waitfor delay ' 00:00:10 ' -- 等待10秒 rollback tran select * from table1

?  在第二個連接中執行以下語句

              
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED print ' 臟讀 ' select * from table1 if @@rowcount > 0 begin waitfor delay ' 00:00:10 ' print ' 不重復讀 ' select * from table1 end

  第二個連接的結果

  臟讀?

A ?B C
a1 ?b1 ?c1
a2 ?b2 ?c
a3 ?b3 c

  '不重復讀'

A ?B C
a1 ?b1 ?c1
a2 ?b2 ?c2
a3 ?b3 c3

  READ COMMITTED

  指定在讀取數據時控制共享鎖以避免臟讀,但數據可在事務結束前更改,從而產生不可重復讀取或幻像數據。該選項是 SQL Server 的默認值。

  在第一個連接中執行以下語句

              
SET TRANSACTION ISOLATION LEVEL READ COMMITTED begin tran print ' 初始 ' select * from table1 waitfor delay ' 00:00:10 ' -- 等待10秒 print ' 不重復讀 ' select * from table1 rollback tran

  在第二個連接中執行以下語句

              
SET TRANSACTION ISOLATION LEVEL READ COMMITTED update table1 set c = ' c '

  第一個連接的結果

  初始

A B C
a1 ?b1 ?c1
a2 ?b2 ?c2
a3 ?b3 ?c3

  不重復讀
A B C
a1 b1 c
a2 ?b2 c
a3 ?b3 ?c

  REPEATABLE READ

  鎖定查詢中使用的所有數據以防止其他用戶更新數據,但是其他用戶可以將新的幻像行插入數據集,且幻像行包括在當前事務的后續讀取中。因為并發低于默認隔離級別,所以應只在必要時才使用該選項。

  在第一個連接中執行以下語句?

              
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ begin tran print ' 初始 ' select * from table1 waitfor delay ' 00:00:10 ' -- 等待10秒 print ' 幻像讀 ' select * from table1 rollback tran

?  在第二個連接中執行以下語句

              
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ insert table1 select ' a4 ' ' b4 ' ' c4 '

  第一個連接的結果

  初始

A B C
a1 b1 ?c1
a2 ?b2 c2
a3 ?b3 ?c3

  幻像讀
A

B

C
a1 ?b1 ?c1
a2 b2 ?c2
a3 ?b3 ?c3
a4 b4 ?c4

???? SERIALIZABLE

  在數據集上放置一個范圍鎖,以防止其他用戶在事務完成之前更新數據集或將行插入數據集內。這是四個隔離級別中限制最大的級別。因為并發級別較低,所以應只在必要時才使用該選項。該選項的作用與在事務內所有 SELECT 語句中的所有表上設置 HOLDLOCK 相同。

  在第一個連接中執行以下語句

              
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE begin tran print ' 初始 ' select * from table1 waitfor delay ' 00:00:10 ' -- 等待10秒 print ' 沒有變化 ' select * from table1 rollback tran

  在第二個連接中執行以下語句

              
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE insert table1 select ' a4 ' ' b4 ' ' c4 '

  第一個連接的結果

  初始

A B C
a1 ?b1 ?c1
a2 ?b2 c2
a3 ?b3 ?c3
?  沒有變化
A B C
a1 ?b1 ?c1
a2 ?b2 c2
a3 ?b3 c3

五 事務處理嵌套的語法和對@@TRANCOUNT的影響

              
BEGIN TRAN @@TRANCOUNT+ 1 COMMIT TRAN @@TRANCOUNT- 1 ROLLBACK TRAN

?

?

?

MS SQL 事務的概念


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 男女xx| 精品成人一区二区三区 | 国产人妻互换一区二区水牛影视 | 亚洲视频一区在线 | 天天干天天操天天透 | 国产区在线 | 亚洲fuli在线观看 | 国产一区免费在线观看 | 久久人人爽人人爽 | 欧美高清不卡午夜精品免费视频 | 日本AAA片爽快视频 波多在线 | 美女污直播 | 午夜影院在线观看版 | 黄网站免费在线 | 免费黄色福利 | 我爱看片(永久免费) | 天天干天天操天天做 | 亚洲精品色综合久久 | 99久久精品国产片久人 | 亚洲欧洲精品在线 | 日韩欧美中文 | 欧美日韩一区二区不卡 | 日韩欧美一级精品久久 | 精品72久久久久久久中文字幕 | 国产免费视频 | 日本又黄又粗暴的gif动态图含羞 | 国产精品亚洲综合 | 色综合亚洲天天综合网站 | 国产精品久久人妻无码网站蜜臀 | 国产成人理在线观看视频 | 丁香六月激情婷婷 | 日本精品在线 | 亚洲电影一区二区三区 | 国内精品伊人久久久影视 | 成人免费精品 | 久久av一区二区三区 | 欧美aaaaaaaa| 傲视影院午夜毛片 | 一级黄色大片视频 | 中文天堂av | 免费色视频 |