Mysql事物

mysql事物

  • 一个最小不可再分的工作单元
  • 通常一个事务对应一个完整的业务:(如银行转账业务)
  • 而一个完整的业务需要有批量的DML(insert、update、delete)语句共同完成
  • 事务只和DML语句有关系,或者说只有DML语句才有事务

事务具有四个特性

  • 原子性
    • 事务是最小单元,不可再分
  • 一致性
    • 事务要求所有的DML语句操作的时候,必须保证同时成功或同时失败
  • 隔离性
    • 一个事务不会影响其他事务的运行
  • 持久性
    • 在事务完成之后,该事务对数据库的操作的更改将持久地保存在数据库中,并不会被回滚

mysql事务隔离级别

  • 读未提交 Read Uncommitted(级别最低)

    • 事务A和事务B,事务A未提交的数据,事务B可以读取
    • 这里读取到的数据可以叫做脏数据脏读 Dirty Read
    • 读未提交隔离级别最低,这种级别一般只在理论上存在,数据库默认隔离级别一般都高于该隔离级别
  • 读已提交 Read Committed

  • 可重复读 Repeatable Read

  • 串行化 Serializable

  • 查看会话隔离级别

    1
    select @@global.tx_isolation,@@tx_isolation;
  • 更改会话级的隔离级别

    1
    set session tx_isolation='read-uncommitted';