MySQL事務隔離級別和鎖

事務操做

MySQL隔離級別 (級別依次下降)

  • SERIALIZABLEsession

  • REPEATABLE_READ (默認)(幻讀:讀不到剛剛更新的數據)code

  • READ_COMMITTED(不可重複讀:一個事務中屢次查詢可能不一致)事務

  • READ_UNCOMMITTED(髒讀:讀取到未提交的數據)it

查詢數據默認隔離級別

//查詢全局和Session的隔離級別
select @@GLOBAL.tx_isolation, @@Session. tx_isolation;

//結果:可重複讀
REPEATABLE-READ | REPEATABLE-READ

設置隔離級別

SET GLOBAL tx_isolation='SERIALIZABLE'
SET SESSION tx_isolation='READ_COMMITTED'

MySQL的事務操做

start transaction;
//insert,update 等操做
commit;

鎖操做

設置鎖

//同時給多表加鎖,table1加讀鎖,table2加寫鎖。
lock table table1 READ, table2 write;

解鎖

unlock tables;

讀鎖、寫鎖操做說明

  • 讀鎖,當前session寫操做失敗,其餘session只能讀,寫操做會被block。io

  • 寫鎖,當前session能夠讀寫,其餘session讀寫都被block。table

相關文章
相關標籤/搜索