您好,登錄后才能下訂單哦!
下文主要給大家帶來MySQL中鎖有何必要性及類別,希望這些內容能夠帶給大家實際用處,這也是我編輯MySQL中鎖有何必要性及類別這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
當用戶訪問量增長時,數據庫往往是一個系統的性能瓶頸,但不光光是性能瓶頸,數據安全也會隨之浮現,這時候鎖機制就非常有必要。
并發造成的數據安全問題主要分為3個方面:臟讀、幻讀、不可重復讀
一. 臟讀
臟讀就是一個事務讀取到了另一個事務未提交的數據。
時間線 事務1 事務2 1 begin; 2 select * from lock where id = 1; 3 begin; 4 update lock set name='dirty'; 6 select * from lock where id = 1; 7 commit; commit;
二. 幻讀
幻讀就是一個事務讀到了另一個事務insert的數據
時間線 事務1 事務2 1 begin; 2 select * from lock where id > 1; 3 begin; 4 insert lock select 2; 5 commit; 6 select * from lock where id > 1; 7 commit;
三. 不可重復讀
不可重復讀就是多次讀取統一數據返回的結果不一致。同臟讀不同,這是讀取已經提交的數據;同幻讀也不同,這邊是更新數據,幻讀是插入數據。
時間線 事務1 事務2 begin; select * from lock where id = 1; begin; update lock set name='non-rr'; commit; select * from lock where id = 1; commit;
MySQL通過對事務的隔離來解決以上三種問題
共有4種隔離級別
隔離級別 臟讀 幻讀 不可重復讀 未提交讀(RUC) 是 是 是 已提交讀(RC) 否 是 是 可重復讀(RR) 否 是 否 可串行化 否 否 否
MySQL通過鎖機制來實現事務的隔離
鎖的分類如下
對于以上關于MySQL中鎖有何必要性及類別,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。