目录
  • MySQL事务的四大特性以及并发事务
    • 事务的四大特性ACID
    • 事务-并发事务问题
  • 总结

    MySQL事务的四大特性以及并发事务

    事务的四大特性ACID

    原子性(Atomicity):

    • 事务是不可分割的最小单元,要么全部成功,要么全部失败。
    • (eg:转账案例,转账过程中任何一步操作失败了,那么整个事务就失败了)

    一致性(Consistency):

    • 事务完成时,必须使所有的数据都保持一致状态。
    • (不管是事务执行成功提交,还是事务执行失败回滚了,张三李四账户余额加起是一个恒定值。转账前总和6000,转账后不可能出现两个人的账户总和8000)

    隔离性(Isolation):

    • 数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
    • (隔离性是指:有并发个事务,事务A、事务B同时操作数据库,A事务在操作的时候不会影响B事务的执行;同理B事务在操作的时候,也不会影响A事务的执行。它们两个事务在独立的环境下运行的,互不影响。)

    持久性(Persistence):

    • 事务一旦提交或回滚,它对数据库中的数据改变就是永久的。
    • (不管是事务执行成功提交了,还是操作异常回滚了,它对数据库的改变时永久的,因为数据库的数据最终是存储在磁盘的,那么存储在磁盘的数据它会被永久的保留下来)

    事务-并发事务问题

    脏读:一个事务读到另一个事务还没有提交的数据。

    不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。

    幻读: 一个事务按照条件查询事务时,没有对应的数据行,但是在插入数据时,又发现这行数据已存在,好像出现了幻影。

    并发事务出现的问题-图文描述:

    脏读:

    • B事务读取A事务修改后(update后)未提交的数据;
    • 事务A对id=1 的数据进行了修改,且修改后还未提交事务,此时事务B查询id=1的数据,查到的数据是事务B修改后未提交的数据。这种情况称之为脏读。

    不可以重复读:

    • A事务一共有4个操作,第一步时查询数据库id=1的数据,第二步执行其他操作时,此时B事务对id=1的数据进行修改(注:并发事务),修改后提交事务。
    • A事务执行第三步查询id=1的数据时,和第一步查询id=1的返回结果不一样(因为B事务对id=1的数据进行了修改),这种情况称之为不可以重复读。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持本网站。

    您可能感兴趣的文章:

    • MySQL学习之事务与并发控制
    • MySQL事务的ACID特性以及并发问题方案
    • Mysql事务并发脏读+不可重复读+幻读详解
    • mysql+mybatis实现存储过程+事务 + 多并发流水号获取
    • MySQL系列之十 MySQL事务隔离实现并发控制