《Mysql應用mysql 詳解隔離級別操作過程(cmd)》要點:
本文介紹了Mysql應用mysql 詳解隔離級別操作過程(cmd),希望對您有用。如果有疑問,可以聯系我們。
MYSQL學習讀未提交示例操作過程-Read uncommitted
MYSQL學習1、打開兩個MySql的命令提示行,均進入相同數據庫,并檢查當前表內容為相同數據如下:
MYSQL學習
MYSQL學習2、在A、B兩端執行select @@tx_isolation;檢查當前默認的隔離級別別,可以發現都是
MYSQL學習Repeatable Read C可重復讀-(在當前事務內,重復讀取第一次讀取過的數據就叫可重復讀.)
MYSQL學習
MYSQL學習3、修改A端的隔離級別為readuncommitted C讀未提交.意思是可以讀取別人沒有提交的數據.
MYSQL學習
set transactionisolation level read uncommitted;
MYSQL學習在綠色的MySql5.5上請執行:
MYSQL學習
Set sessiontransaction isolation level read uncommitted;
MYSQL學習?? 然后再查看是否已經發生改變:
MYSQL學習
MYSQL學習4、在A、B兩端都開啟事務
MYSQL學習
starttransaction;
MYSQL學習5、在B端修改一行數據如:
MYSQL學習
update stud setname='Jhon' where id=1;
MYSQL學習?? 其后在A端執行查詢:select * from stud;
MYSQL學習
MYSQL學習6、此時B端再次執行回滾操作
MYSQL學習Rollback;
MYSQL學習?? 再在A端進行查詢,結果發現數據又回到了之前的數據.這就是臟讀:
MYSQL學習
MYSQL學習7、對于B端寫入的新數據,如果沒有提交A端也一樣能查詢到,這叫幻讀.
MYSQL學習
MYSQL學習?讀已提交操作過程:-read COMMITTED
MYSQL學習1、 檢查A、B兩端是否一致:
MYSQL學習
MYSQL學習2、修改A端(左)的隔離級別為readcommitted;
MYSQL學習
set transactionisolation level read committed;
MYSQL學習?? 在A端開啟事務:
MYSQL學習?? starttransaction;
MYSQL學習?? 在B端開啟事務
MYSQL學習
MYSQL學習3、在A端進行查詢:
MYSQL學習
Select * fromstud;
MYSQL學習在B端修改一行記錄并提交
MYSQL學習
Update stud setname='itcast' where id=1;
MYSQL學習再回到A端進行查詢,發現在同一個事務內,兩次查詢的結果不一樣:
MYSQL學習
MYSQL學習?可重復讀示例Repeatable Read
MYSQL學習1、查看A端的隔離級別是否為Repeatableread級別:
MYSQL學習Select@@tx_isolation;
MYSQL學習2、先在A端在開啟的事務內進行查詢.
MYSQL學習然后在B端修改數據庫的內容.
MYSQL學習最后再在A端的同一事務內進行查詢,發現結果一致.
MYSQL學習
MYSQL學習?Serializable是最高級的隔離級別
MYSQL學習1、在A端設置隔離級別為Serializable
MYSQL學習
set transactionisolation level serializable;
MYSQL學習在A端開啟一個事務-并對stud表進行查詢.
MYSQL學習在B端開啟一個事務,并寫入一行記錄.此時發現B的代碼并沒有執行,因為它在等A提交之后它才執行.
MYSQL學習類似于線程同步的概念
MYSQL學習
MYSQL學習?這四種隔離級別采取不同的鎖類型來實現,若讀取的是同一個數據的話,就容易發生問題.例如:
MYSQL學習臟讀(Drity Read):某個事務已更新一份數據,另一個事務在此時讀取了同一份數據,由于某些原因,前一個RollBack(回滾)了操作,則后一個事務所讀取的數據就會是不正確的.
MYSQL學習不可重復讀(Non-repeatable read):在一個事務的兩次查詢之中數據不一致,這可能是兩次查詢過程中間插入了一個事務更新的原有的數據.
MYSQL學習幻讀(Phantom Read):在一個事務的兩次查詢中數據筆數不一致,例如有一個事務查詢了幾列(Row)數據,而另一個事務卻在此時插入了新的幾列數據,先前的事務在接下來的查詢中,就會發現有幾列數據是它先前所沒有的
MYSQL學習?感謝閱讀,希望能贊助到大家,謝謝大家對本站的支持!
《Mysql應用mysql 詳解隔離級別操作過程(cmd)》是否對您有啟發,歡迎查看更多與《Mysql應用mysql 詳解隔離級別操作過程(cmd)》相關教程,學精學透。維易PHP學院為您提供精彩教程。