1. 程式人生 > >mysql 不同事務隔離級別

mysql 不同事務隔離級別

結果 讀取 般的 lec 不同的 新增 比較 一次 基礎

repeatable read 在同一事務中,同一查詢多次進行時候,由於其他插入操作(insert)的事務提交,導致每次返回不同的結果集。

標準的repeatable read是允許幻讀的,因為這一級別只在讀取過的紀錄上加共享鎖,防止別其它事務修改,但是不禁止其它人插入新數據.

當第一次讀的時候,他們就被固化(快照)了,自己再也無法發現他們的任何變化,但是卻不禁止其它人修改刪除插入.

這種級別適合做什麽呢? 其實不太適合一般的聯機交易類似,而更適合統計查詢報表類需求.

比如,我們需要根據一些明細,統計數據,並將結果保存到另外幾張表中,也就是無法通過一個SQL完成,使用mysql RR就比較合適

begn work

insert into tj1 select * from t where ....

insert into tj2 select * from t where ....

commit

如果使用read commit級別,tj1插入後,t可能被修改新增刪除,那麽隨後的tj2結果就可能與tj1的基礎數據不一致.

但是使用RR級別就不存在這個問題.因此第一次讀就被固化了.即便t隨後被清空,也不影響tj2的結果.

mysql 不同事務隔離級別