走進事務 2 隔離性

2021-10-02 07:30:47 字數 870 閱讀 3862

隔離性

兩個事務併發交錯操作同乙個資料時,會出現的一些問題,如下,隔離性就是為解決這些問題提供的。注意隔離性有程度之分

問題1:讀的不正確

問題1.1:髒讀【讀取了別人沒有提交的資料(一般的,也要避免)】

問題1.2:不可重複讀【乙個事務讀取的兩次中間,別的事務干擾(干擾:修改了資料)】

問題1.3:幻讀【跟』不可重複讀』類似.乙個事務讀取的兩次中間,別的事務干擾(干擾:刪除或者插入了資料】

問題2:寫的不正確

問題2.1:回滾導致的丟失更新(必須避免,因為資料都錯了)

問題2.2:提交導致的丟失更新(必須避免,因為資料都錯了)

上面不同事務交錯操作導致的一些問題,對於問題2.1,2.2是要求必須避免的,問題1.1要求盡量避免。問題1.2,1.3只是讀的不正確,再讀一次就好了。

關於隔離性的一般性結論

一般的,使用read commited就可以了,因為它可以避免』髒讀』,而且』併發性』是好的.

而』資料不正確』問題交給』資料庫的鎖機制』

而』幻讀』和』不可重複讀』問題,無法解決,可能會在極少的情況下發生.發生了也沒有什麼大的影響,再讀一次就好了

問題1的3種讀取錯誤概念如果不理解可以參考下面鏈結的圖(只用看圖就行了,不理解也沒影響)

問題2的兩種丟失更新如果不理解可以參考下面鏈結的圖(只用看圖就行了,不理解也沒影響):

關於jdbc標準提供的4種隔離級別可參考下面的連線的圖(只用看圖就行了,不理解也沒影響)

走進事務 2 傳播性

概念 傳播性描述了乙個事務加持方法呼叫另外乙個事務加持方法的時候,就有了傳播性。規範中定義了7種傳播規則 一般的,使用預設就好了,預設就是required 遵循呼叫方法事務,如果呼叫方法有事務,就使用它的事務,如果呼叫方法沒有事務,就自己建立事務。問題舉例 巢狀事務 第4種 require new ...

事務隔離性

事務a 讀取事務b更新的資料,然後事務b回滾,那麼a讀取到的資料就是髒資料 情景展示 1.會話b 可提交讀 set session transaction isolation level read uncommitted begin update account set balance balanc...

事務的隔離性

例如 統計定單系統中事務活動 如下 1.事務t1列印定單表中的記錄 2.t2向定單表插入了新的定單,t2提交 3.事務t1統計定單表中的的記錄總數,t1提交 因為事務t2在t1結束前向定單表中插入了新的記錄,導致事務t1列印的定單記錄數量和t1統計的定單數量不一致.產生併發異常問題的主要原因是併發操...