mysql 如何演示不可重複讀
02-09
不可重複讀,是指在資料庫訪問中,一個事務範圍內,兩個相同的查詢卻返回了不同數據。
看下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的一點看法