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

相关文章
相关标签/搜索