Mysql 事务

基本概念

  • ⼀个最⼩的不可再分的⼯作单元
  • 通常情况下,⼀个事务对应⼀个完整的业务

Mysql 事务特性

ACID

  • A 原⼦性(Atomicity)
    ⼀个事务的所有操作,要么全部完成,要么都没完成,不能结束在中间环节。如果事务在执
    ⾏过程中发⽣错误,会被回滚到事务开始之前的状态

  • C ⼀致性(Consistency)
    在事务开始之前以及事务结束之后,数据库的完整性不能被破坏

  • I 隔离性(Isolation)
    允许多个并发事务同时对数据进⾏修改和读写的能⼒,它可以防⽌由于多个事务并发执⾏时
    由于交叉执⾏⽽导致的数据不⼀致

  • D 持久性(Durability)
    事务处理结束了以后,对数据的修改是永久的,即使是发⽣了系统故障,数据也不会丢失

MySQL四⼤隔离级别

术语说明:
脏读:⼀个事务读取另⼀个事务还没有提交的数据
不可重复读:同⼀个事务内,两个相同的查询返回了不同的结果

  • RU 读不提交(Read Uncommited)
    在该隔离级别下,事务之间完全不隔离,会产⽣脏读,⼀般情况不会使⽤

  • RC 读提交(Read Commited)
    本事务读取到的是其它事务提交的最新数据,但有⼀个问题在同⼀个事务中,前后两相同的
    select可能会读到不同的结果

  • RR 可重复读(Repeatable Read)
    在同⼀个事务中,select的结果是事务开始时时间点的状态,因此,同⼀个事务同样的
    select操作可以读到⼀致的结果

  • serializable串⾏化
    读操作会隐式获取共享锁,保证不同事务之间的互斥