資料隔離級別分為不同的四種
:1、serializable :最嚴格的級別,事務序列執行,資源消耗最大;
2、repeatable read :保證了乙個事務不會修改已經由另乙個事務讀取但未提交(回滾)的資料。避免了「髒讀取」和「不可重複讀取」的情況,但是帶來了更多的效能損失。
3、read committed :大多數主流資料庫的預設事務等級,保證了乙個事務不會讀到另乙個並行事務已修改但未提交的資料,避免了「髒讀取」。該級別適用於大多數系統。
4、read uncommitted :保證了讀取過程中不會讀取到非法資料。
上面的解釋其實每個定義都有一些拗口,其中涉及到幾個術語:髒讀、不可重複讀、幻讀。
這裡解釋一下:
髒讀 :所謂的髒讀,其實就是讀到了別的事務回滾前的髒資料。比如事務b執行過程中修改了資料x,在未提交前,事務a讀取了x,而事務b卻回滾了,這樣事務a就形成了髒讀。
不可重複讀 :不可重複讀字面含義已經很明了了,比如事務a首先讀取了一條資料,然後執行邏輯的時候,事務b將這條資料改變了,然後事務a再次讀取的時候,發現資料不匹配了,就是所謂的不可重複讀了。
幻讀 :小的時候數手指,第一次數十10個,第二次數是11個,怎麼回事?產生幻覺了?
幻讀也是這樣子,事務a首先根據條件索引得到10條資料,然後事務b改變了資料庫一條資料,導致也符合事務a當時的搜尋條件,這樣事務a再次搜尋發現有11條資料了,就產生了幻讀。
MySQL事務隔離級別以及髒讀 幻讀 不可重複讀
事務的隔離性 mysql是乙個客戶端 伺服器架構的軟體,對於同乙個伺服器來說,可以有若干個客戶端與之連線,每個客戶端與伺服器連線上之後,就可以稱之為乙個會話 session 每個客戶端都可以在自己的會話中向伺服器發出請求語句,乙個請求語句可能是某個事務的一部分,也就是對於伺服器來說可能同時處理多個事...
Mysql資料庫隔離級別鎖關係髒讀不可重複讀幻讀
我們在進行資料庫開發時經常會遇到程式事務的相關問題,對於髒讀 幻讀 不可重複讀等問題的處理。資料庫隔離級別以及會出現的問題,如下 隔離級別 資料丟失 髒讀不可重複讀 幻讀讀未提交read uncommitted noyes yesyes 讀已提交 read committed nono yesyes...
事務 隔離級別 髒讀 不可重複 幻讀
事務,就是一組運算元據庫的動作集合。如果一組 處理步驟 全部發生或者一步也不執行,我們稱該組處理步驟為乙個事務。當所有的步驟像乙個操作一樣被完整地執行,我們稱該事務被提交。由於其中的一部分或多步執行失敗,導致沒有步驟被提交,則事務必須回滾到最初的系統狀態。二 事務的併發問題 1 髒讀 事務 a讀取了...