您好,登錄后才能下訂單哦!
這篇文章主要講解了“WCF事物處理是怎樣的”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“WCF事物處理是怎樣的”吧!
單純的事務存在著下面三個問題
1) 臟讀:簡單的說就是事務一在某一時刻更改了數據,恰恰這個更改的數據被事務二讀取,而事務一卻最終失敗,導致數據回滾,那事務二就是一個受騙者
2) 非可重復性讀取:同一數據每次讀取的結果都不一樣就是非可重復讀取。比如事務一要讀取的數據務二改變,這就是非可重復性讀取
3) 幻讀:很簡單,比如事務一在查詢數據中,事務二卻插入了一個符合查詢條件的數據,這樣就造成新插入數據的幻讀。
三種WCF事物處理問題的解釋可能比較難于理解,其實簡單的說,臟讀是讀了別人正在更改的數據,而可重復讀取是更改了別人正在讀的數據,而幻讀呢則是讀了別人還未來得及插入,更改或者刪除的數據,我想這樣理解就簡單多了。針對上面不同的問題,可以設置事務的不同隔離方式來防止問題的發生,事務的隔離方式又包括
1) Any: 組件的隔離級別是從調用組件的隔離級別獲得的。如果組件是根組件,則隔離級別用于 Serializable 中。
2) ReadUncommitted:讀取未提交數據,該方式在讀取數據時保持共享鎖定以避免讀取已修改的數據,但在事務結束前可以更改這些數據,這導致非可重復讀取或幻讀。
3) ReadCommitted:讀取提交數據, 發出共享鎖定并允許非獨占方式的鎖定。該方式與讀取未提交數據相相似,這種方式看似和讀取未提交數據相似,但有一個區別,事務的只讀鎖在移到下一行的時候,會解鎖,而寫入鎖卻只有在事務完成或者被中止后才解鎖,事務要等待所有寫入鎖解鎖。
4) RepeatableRead:可重復性讀取,與讀取提交數據相似,在查詢中使用的所有數據上放置鎖,以防止其他用戶更新這些數據。防止非可重復讀取,但幻讀行仍有可能發生。該方式是只讀鎖也要等到事務結束或者中止才解除
5) Serializable:在完成事務前防止更新或插入。
從上面的描述看,幾種隔離方式比較難于區分,WCF事物處理是很難的一件事,但是記住這些更方便的了解隔離方式
隔離級別 | ReadUncommitted | ReadCommitted | RepeatableRead | Serializable | ||
臟讀 | Yes | No | No | No | ||
非可重復性讀取 | Yes | Yes | No | No | ||
幻讀 | Yes | Yes | Yes | No |
從上表可以看出隔離方式除了Any之外,一級比一級嚴厲。Any是一脈相承的,如果它沒有可繼承的,它將是最嚴厲的Serializable
感謝各位的閱讀,以上就是“WCF事物處理是怎樣的”的內容了,經過本文的學習后,相信大家對WCF事物處理是怎樣的這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。