標籤:

mysql 如何演示不可重複讀

不可重複讀,是指在資料庫訪問中,一個事務範圍內,兩個相同的查詢卻返回了不同數據。

看下mysql資料庫是怎麼演示的。

因為mysql資料庫事物隔離級別是可重複讀,所以,使用默認的隔離級別,是演示不出來的。所以要修改一下mysql的事物隔離級別,修改成讀已提交。

如何查看mysql的事物隔離級別呢?使用語句

SELECT @@global.tx_isolation,@@tx_isolation;

修改語句

SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTEDSET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED

再次查看隔離級別,結果顯示

然後開啟一個事物,姑且命名為T1,查看users表

可以看到結果,age是30.

然後開啟另一個會話2,把會話級別也修改為讀已提交,開啟另一個事物T2,修改id=1的記錄,然後commit. 可以看到,在這個會話里,age已經修改成了50.

最後,回到會話1的事物T1,開始第二次查詢 ,結果顯示 age 50

總結來說,在一個事物里,第一次查詢id是1的記錄,age是30,第二次查詢, age是50,前後不一致,所以是不可重複讀。

推薦閱讀:

【乾貨合輯】你有什麼獨家資料庫優化技巧?
我的產品開發之旅(3) - 設計商品一級、二級分類、推薦商品表
aws aurora論文觀後
MySQL LIMIT 詳解
memcached plugin(handlersocket),Memcached的一點看法

TAG:MySQL | SQL |