記錄下網上看到的又用的資料:需要反覆閱讀以加深理解啊
RC(Read Commited) | RR(Repeatable Read ) | |
id主鍵+RC | 只需要對id對應的記錄加上排它鎖 | 同RC |
id唯一索引+RC | 需要在id對應的唯一索引上加鎖,需要在聚簇索引上對應的記錄加鎖 | 同RC |
id非唯一索引+RC | 所有滿足SQL查詢條件的記錄都加鎖,同事這些記錄在主鍵索引上的記錄也會加鎖 | 通過id索引定位到第一條滿足條件的記錄,加記錄的排他鎖,加GAP上的GAP鎖, 然後加主鍵聚簇索引上的記錄排它鎖。然後讀取嚇一跳,重複進行,直到進行到 不再滿足條件的記錄, 此時不加記錄的排它鎖,但是需要加GAP鎖。 |
id無索引+RC | 通過聚簇索引進行全表掃描,然後對每條記錄都加鎖。 | 鎖表上所有記錄,同事鎖上聚簇索引內的所有GAP,以杜絕發生更新/插入/刪除 操作。 |
http://hedengcheng.com/?p=771:MySQL 加鎖處理分析,博主分析的很詳細,閱讀後受益匪淺
http://hedengcheng.com/?p=844:一個最不可思議的MySQL死鎖分析:仔細閱讀後,對mysql的加鎖理解更加深一步