Mysql并发控制-事务

Mysql并发控制-事务

事务的特性ACID

  • A: atomiciy 原子性
    一个事务必须保证其中的操作要么全部执行,要么全部回滚。
  • C: consistency 一致性
    数据必须保证从一种一致性的状态转换为另一种一致性状态。
  • I:isolation 隔离性
    当一个事务未执行完成时,通常会保证其他session无法看到这个事务的执行结果。
  • D:druability 持久性
    事务一旦commit,则数据会保存下来,即使提交后系统崩溃,数据也不会丢失。

事务的隔离级别

  • READ UNCOMMITTED(读未提交,可脏读)
    事务中的修改,即使没有提交,其他会话也能读到-出现脏读。
  • READ COMMITTED(读已提交,可幻读)
    保证了一个事务如果没有commit,事务中的操作对其他会话是不可见的。
    解决了脏读的问题,但是会对其他session产生两次不一致的读取结果-出现幻读。
  • REPEATABLE READ (可重复读)
    一个事务中多次执行同一读sql,返回结果是一样的,解决了幻读和脏读问题。
    InnoDB使用间隙锁对当前读进行加锁,锁住行以及可能产生幻读得插入位置,阻止新的数据插入产生幻读行。
  • SERIALIZABLE(可串行化)
    最强的隔离级别,通过给事务中酶促读取的行加锁,写加写锁,保证不产生幻读问题,但是会导致大量超时以及锁竞争问题。

你可能感兴趣的:(Mysql并发控制-事务)