明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

MySQL中鎖的必要性及分類介紹

[摘要]本篇文章給大家?guī)淼膬?nèi)容是關(guān)于MySQL中鎖的必要性及分類介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。當(dāng)用戶訪問量增長時,數(shù)據(jù)庫往往是一個系統(tǒng)的性能瓶頸,但不光光是性能瓶頸,...
本篇文章給大家?guī)淼膬?nèi)容是關(guān)于MySQL中鎖的必要性及分類介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

當(dāng)用戶訪問量增長時,數(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ù)的隔離

鎖的分類如下

2461191540-5bc36b1616939_articlex.png

以上就是MySQL中鎖的必要性及分類介紹的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。