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

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

事务特性

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

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

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

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

隔离级别

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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容