千鋒教育2023新版javaweb速成全套教程,零基礎入門到企業(yè)項目實戰(zhàn)

p54 1.52
MySQL事務
MySQL事務具有原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)四個特性,簡稱 ACID,缺一不可。
事務隔離級別(隔離性):
1.讀未提交(READ UNCOMMITTED)
可能會導致臟讀
臟讀指的是讀到了其他事務未提交的數(shù)據(jù),未提交意味著這些數(shù)據(jù)可能會回滾,也就是可能最終不會存到數(shù)據(jù)庫中,也就是不存在的數(shù)據(jù)。讀到了并一定最終存在的數(shù)據(jù),這就是臟讀。
2.讀已提交(READ COMMITTED)
避免了臟讀,但是可能會導致讀不可重復讀(虛讀)
不可重復讀指的是在同一事務內,不同的時刻讀到的同一批數(shù)據(jù)可能是不一樣的,可能會受到其他事務的影響
3.可重復讀(REPEATABLE READ)MySQL默認
避免了不可重復讀,會導致幻讀
幻讀是針對數(shù)據(jù)插入(INSERT)操作來說的。假設事務A對某些行的內容作了更改,但是還未提交,此時事務B插入了與事務A更改前的記錄相同的記錄行,并且在事務A提交之前先提交了,而這時,在事務A中查詢,會發(fā)現(xiàn)好像剛剛的更改對于某些數(shù)據(jù)未起作用,
4.串行化(SERIALIZABLE)
同時只允許一個事務對數(shù)據(jù)表進行操作,避免臟讀,幻讀,虛讀
設置數(shù)據(jù)庫的事務隔離級別
查詢當前的隔離級別
8.03之前
select @@tx_isolation
8.03之后
select @@transaction_isolation
設置隔離級別
set session transaction isolation level
read committed