文章圖片來自參考文章,圖片非原創
概述
事務隔離級別可解決的問題
下面的章節將會解釋髒讀,不可重複度和幻讀。MySQL 默認的事務隔離級別是可重複讀(repeatable – read ) 。
隔離級別
讀未提交(read – uncommited)
我們從名稱上級就可以瞭解這個過程,讀未提交,未commited 的數據有可能會回滾,那麼讀到的數據就是髒數據,這就是髒讀了。下面用以下實例來說明。
先創建兩個客戶端,創建A
創建B , 並開啓事務,但是未提交
那此時我們看一下A讀到的數據,由 450 變成了400
所以這就有問題了,此時B 要是回滾呢
那麼A 此時操作呢
讀提交
讀提交解決了髒讀,但是存在不可重複讀的問題 。上面由於讀取沒有提交的數據導致讀到了髒數據,那麼我就等你提交後再讀取咯。
我們再看一下 B 沒提交,是否可以讀到修改的數據。
上面可以看到A 在沒提交前讀取是沒有問題的,那麼提交後呢?
兩次讀取是不一樣的,那麼就是說不可重複讀。
可重複讀(repeatable – read )
可重複讀主要的特點是 : 解決了不可重複讀,但是存在幻讀。下面的例子展示數據是可重複讀的
可以看到兩次讀取是一致的。