下文主要給大家?guī)鞰ySQL中鎖有何必要性及類別,希望這些內(nèi)容能夠帶給大家實際用處,這也是我編輯MySQL中鎖有何必要性及類別這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
成都創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、鼓樓網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為鼓樓等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
當用戶訪問量增長時,數(shù)據(jù)庫往往是一個系統(tǒng)的性能瓶頸,但不光光是性能瓶頸,數(shù)據(jù)安全也會隨之浮現(xiàn),這時候鎖機制就非常有必要。
并發(fā)造成的數(shù)據(jù)安全問題主要分為3個方面:臟讀、幻讀、不可重復(fù)讀
一. 臟讀
臟讀就是一個事務(wù)讀取到了另一個事務(wù)未提交的數(shù)據(jù)。
時間線 事務(wù)1 事務(wù)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;
二. 幻讀
幻讀就是一個事務(wù)讀到了另一個事務(wù)insert的數(shù)據(jù)
時間線 事務(wù)1 事務(wù)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;
三. 不可重復(fù)讀
不可重復(fù)讀就是多次讀取統(tǒng)一數(shù)據(jù)返回的結(jié)果不一致。同臟讀不同,這是讀取已經(jīng)提交的數(shù)據(jù);同幻讀也不同,這邊是更新數(shù)據(jù),幻讀是插入數(shù)據(jù)。
時間線 事務(wù)1 事務(wù)2 begin; select * from lock where id = 1; begin; update lock set name='non-rr'; commit; select * from lock where id = 1; commit;
MySQL通過對事務(wù)的隔離來解決以上三種問題
共有4種隔離級別
隔離級別 臟讀 幻讀 不可重復(fù)讀 未提交讀(RUC) 是 是 是 已提交讀(RC) 否 是 是 可重復(fù)讀(RR) 否 是 否 可串行化 否 否 否
MySQL通過鎖機制來實現(xiàn)事務(wù)的隔離
鎖的分類如下
對于以上關(guān)于MySQL中鎖有何必要性及類別,大家是不是覺得非常有幫助。如果需要了解更多內(nèi)容,請繼續(xù)關(guān)注我們的行業(yè)資訊,相信你會喜歡上這些內(nèi)容的。