MySQL是一款著名的關系型數(shù)據(jù)庫管理系統(tǒng)。在MySQL中,事務(transaction)是實現(xiàn)數(shù)據(jù)一致性、可靠性的重要手段。在多個操作同時執(zhí)行時,事務可以保證操作成功或者失敗的原子性,同時保證數(shù)據(jù)的一致性。MySQL中的事務有多種實現(xiàn)方式,其中就包括RR。
RR的全稱是Repeatable Read,即可重讀讀取。MySQL中的RR事務的特點就是在一個事務中,進行SELECT的時候所讀取到的數(shù)據(jù)必須是一致的,即不能進行dirty read,也不能進行repeatable read。MySQL中的RR事務還能夠解決幻讀的問題,保證事務操作數(shù)據(jù)的正確性和完整性。
BEGIN; SELECT * FROM table WHERE id=100 FOR UPDATE; -- 對table表的id=100的記錄加排他鎖,避免其他事務修改該記錄 UPDATE table SET name='new name' WHERE id=100; -- 更新id=100記錄的name字段 COMMIT;
上述代碼第二行SELECT加了FOR UPDATE關鍵字,這個關鍵字提示MySQL,對于所查詢的數(shù)據(jù)記錄不能被其他事務修改,保證上述事務執(zhí)行過程中的數(shù)據(jù)原子性和CONSISTENCY。最后,事務COMMIT完成,數(shù)據(jù)被成功寫回到數(shù)據(jù)庫中。
上一篇mysql 事件運行周期
下一篇mysql 事件查看器