聊事務隔離級別和鎖問題之前首先得理解事務的隔離級別和共享鎖及獨佔鎖的概念:
事務的隔離級別:
髒讀不可重複讀
幻讀read uncommitted√√
√read committed×√
√repeatable read××
√serializable××
×獨佔鎖(x鎖):獨佔鎖也叫排他鎖,是指該鎖一次只能被乙個執行緒所持有。如果執行緒t對資料a加上排他鎖後,則其他執行緒不能再對a加任何型別的鎖。獲得排它鎖的執行緒既能讀資料又能修改資料。
共享鎖(s鎖):共享鎖是指該鎖可被多個執行緒所持有。如果執行緒t對資料a加上共享鎖後,則其他執行緒只能對a再加共享鎖,不能加排它鎖。獲得共享鎖的執行緒只能讀資料,不能修改資料。
1、read uncommitted
mysql設定read uncommitted隔離級別,資料庫在修改(update)資料時,使用的是共享鎖,所以在修改資料未提交事務時,查詢(select)語句是能查到此時修改的資料,如果回滾了修改的資料,則查詢到的資料是有問題的,造成了髒讀。該隔離級別下查詢不加鎖,主要涉及到的是共享鎖
資料庫在修改資料時,使用的是獨佔鎖,查詢資料使用的是共享鎖,所以在修改資料時執行查詢,查詢資料會等待修改資料事務提交後,執行查詢並返回提交後的結果
mysql預設的隔離級別,加鎖情況同read committed,但是repeatable read在讀取資料後,不會立即釋放共享鎖,而是要等到事務結束後才會釋放
直接對操作的表加表鎖,其他事務不能讀寫該錶,效率比較低
mysql 鎖 事務隔離級別
最近在看mysql相關的書籍.實驗了一些內容.分享一下,主要是關於事務隔離級別 read committed和repeatable read 和鎖相關的.很多網上文章上都能搜尋到 read committed可以防止髒資料.但是不能防止 不可重複讀.而repeatable read可以防止 不可重複...
MySQL事務及事務隔離級別
原子性 atomicity 事務是乙個原子操作單元,其對資料的修改,要麼全都執行,要麼全都不執行。一致性 consistent 在事務開始和完成時,資料都必須保持一致狀態。這意味著所有相關的資料規則都必須應用於事務的修改,以保持資料的完整性 事務結束時,所有的內部資料結構 如b樹索引或雙向鍊錶 也都...
mysql鎖問題 事務隔離級別
相對其他資料庫而言,mysql的鎖機制比較簡單,其最顯著的特點是不同的儲存引擎支援不同的鎖機制。innodb最大的特點就是一是支援事務 transaction 二是採用了行級鎖。所以我們先來引申一下事務和事務隔離級別的知識。1.1 事務以及acid屬性 事務是由一組sql語句組成的邏輯處理單元,事務...