不可重復讀會導致什么問題?
不可重復讀可以這樣理解:有一個大事務,要執行很長時間;另外有一堆小事務,很快就執行完成。
大事務來回查一個數據。
一堆小事務串行(假設的,方便理解,禁止套娃)改這個數據,改完之后提交成功。
大事務雖然讀到的也是小事務提交之后的內容,但是這個數據經常被小事務改來改去。
想避免不可重復讀,可以給加共享鎖(即讀鎖),加了共享鎖之后,任何事務就不得加排他鎖(即寫鎖)了,這樣就完美解決了不可重復讀的問題。
設置共享讀鎖也就是隔離級別提高到 REPETABLE_READ 可重讀,這也是 MySQL 的默認隔離級別。