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

不言
發布: 2018-10-17 16:58:01
轉載
2578 人瀏覽過

這篇文章帶給大家的內容是關於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中鎖的必要性與分類介紹


#

以上是MySQL中鎖的必要性與分類介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!