MySQL事務隔離級別可重複讀測試

2021-10-02 03:35:52 字數 553 閱讀 6799

開啟rds,查詢當前的事務隔離級別select @tx_isolation查詢得到時候可重複讀,於是做了如下測試。

可重複隔離級別的特點是,每個事務可以在乙個事務中可以反覆讀取資料,每次讀取到的資料都是相同的。在《高效能mysql》一書中,講到這種隔離級別很好的解決了髒讀問題,也就是讀取的資料都是事務開始前的資料,另外還是依然會產生幻讀問題。然而沒有提及到在這種情況下是如何去鎖定資料的。

測試一:

開啟事務a,開啟事務b

事務a:執行按id查詢的sql語句。

事務b:執行同樣的查詢語句,得到相同的結果。

事務a:執行以id作為條件的更新語句

事務b:執行以id和查詢結果作為更新的兩個條件,執行update,提交被阻塞

事務a:提交事務a,查詢相同id的資料,得到更新後的資料

事務b:更新失敗,更新結果的條數為零

上述的測試表明了,mysql在重複讀隔離級別下,查詢是查詢的當前事務開啟前的資料,而更新的時候,事務沒有提交前是鎖定資料的。同事執行update 的時候,查詢的是所有事務提交後的資料,包括在當前事務開啟後的再提交的資料。非常重要。

事務隔離級別 可重複讀

mysql pom 5 select global.tx isolation global.tx isolation repeatable read 如果事務隔離級別顯示repeatable read,即是可重複讀。在資料庫操作中,為了有效保證併發讀取資料的正確性,提出的事務隔離級別。我們的資料庫鎖...

mysql中事務隔離級別可重複讀說明

mysql中innodb引擎預設為可重複讀的 repeatable read 修改隔離級別的方法,你可以在my.inf檔案的 mysqld 中配置 transaction isolation 使用者可以用set transaction語句改變單個會話或者所有新進連線的隔離級別。它的語法如下 set ...

MySQL可重複讀隔離級別的實現原理

參考 mysql預設的隔離級別是可重複讀,即 事務a在讀到一條資料之後,此時事務b對該資料進行了修改並提交,那麼事務a再讀該資料,讀到的還是原來的內容。那麼mysql可重複讀是如何實現的呢?使用的的一種叫mvcc的控制方式 即mutil version concurrency control,多版本...