mysql(事务特性、隔离级别描述)

在mysql中只有使用了innodb数据引擎的数据库或者表才支持事务;

事务特性

  • 原子性
    指业务逻辑上的一组操作,这组操作中的每个单元,要么全部成功执行,要么全部执行失败;
  • 一致性
    事务必须使数据库从一个一致性的状态变为另一个一致性的状态;例如,A向B转账,A和B账户总额为2000,则转账完成之后的总额也应该为2000;
  • 隔离性
    在开启多个事务进行数据处理的情况下,一个事务中数据操作不应该对另一个事务中的数据操作产生影响;
  • 持久性
    事务一旦提交,数据就应该永久保存下来;

事务的隔离级别(事务的特性中,最麻烦的一种特性就是隔离性)

如果不考虑事务的隔离性,会出现一下情况

  • 脏读
    一个事务读取到了另一个事务未提交的数据;
  • 不可重复读
    一个事务读取到另一个事务已提交的update操作;
  • 虚读(幻读)
    一个事务读取到另一个事务已提交的insert操作;

隔离级别

  • READ_UNCOMMITTED(读未提交) 会出现脏读、不可重复读、幻读;
  • READ_COMMITTED(读已提交) 防止脏读,会出现不可重复读、幻读;
  • REPEATABLE_READ(可重复读) 防止脏读、不可重复读,会出现幻读;
  • SERIALIZABLE(串行化) 防止脏读、不可重复读、虚读的发生;

注意:隔离界别越高,数据越安全,但性能越差;

你可能感兴趣的:(mysql(事务特性、隔离级别描述))