1. 程式人生 > >豬豬の百寶箱

豬豬の百寶箱

  • RR可重複讀:其實mysql在RR級別,是沒有幻讀情況。用行鎖解決了不可重複讀,也就是讀取到資料後就加鎖,其它事務無法修改這些資料,但解決不了A事務開啟後,B事務插入一條資料,A事務發現莫名其妙多了一條資料的幻讀問題。行鎖會禁止update和delete但無法阻止insert。當RR級別,update時,如果事務update的是根據主鍵去查詢的資料行,間隙鎖會鎖上大於等於該主鍵欄位最小值的資料行,防止別的事物insert;如果事務update的是根據非主鍵去查詢的資料行,那麼會給全表加上gap鎖。因此行鎖間隙鎖組成的Next-Key鎖防止了幻讀。InnoDB用樂觀鎖原理的MVCC也能防止幻讀。