MySQL事务隔离级别和锁

事务操作

MySQL隔离级别 (级别依次降低)

  • SERIALIZABLE

  • REPEATABLE_READ (默认)(幻读:读不到刚刚更新的数据)

  • READ_COMMITTED(不可重复读:一个事务中多次查询可能不一致)

  • READ_UNCOMMITTED(脏读:读取到未提交的数据)

查询数据默认隔离级别

//查询全局和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。

  • 写锁,当前session可以读写,其他session读写都被block。

    原文作者:我有切糕
    原文地址: https://segmentfault.com/a/1190000009379098
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞