關於Spring Aop和事務記錄

Fighting1021發表於2018-08-21

事務

事務的四大隔離級別(Isolation:由低到高分別為Read uncommitted 、Read committed 、Repeatable read 、Serializable 。 )

七大傳播行為;而且,在事務的併發操作中可能會出現髒讀,不可重複讀,幻讀;

下面我們就來探討髒讀,不可重讀,幻讀等情況;

Read uncommitted

讀未提交,顧名思義,就是一個事務可以讀取另一個未提交的資料。

事例:老闆要給程式設計師發工資,程式設計師的工資是3.6萬/月。但是發工資時老闆不小心按錯了數字,按成3.9萬/月,該錢已經打到程式設計師的戶口,但是事務還沒有提交,就在這時,程式設計師去檢視自己這個月的工資,發現比往常多了3千元,以為漲工資了非常高興。但是老闆及時發現了不對,馬上回滾差點就提交了的事務,將數字改成3.6萬再提交。


資料庫dos框,通過mysql -hlocalhost -uroot -proot,通過select @@tx_isolation;查詢當前資料庫隔離級別(mysql未修改時隔離級別為REPEATABLE-READ

通過set session transaction isolation level read uncommitted將事務隔離級別設定為讀未提交。

好了,15號了  發工資了 程式設計師查了下卡了。恩?老闆還沒打錢;

老闆還沒提交事務,程式設計師就迫不及待的查工資;

老闆發現不對勁了,咦?怎麼多往這小子轉錢了。趕緊回滾,將工資改為36000後提交;

分析:實際程式設計師這個月的工資還是3.6萬,但是程式設計師看到的是3.9萬。他看到的是老闆還沒提交事務時的資料。這就是髒讀

那怎麼解決髒讀呢?Read committed!讀提交,能解決髒讀問題。

 

例子轉至:https://blog.csdn.net/qq_33290787/article/details/51924963

相關文章