【MySQL】事务是什么?事务的特性又是什么?-✍事务并发时出现的问题

1.脏读
当事务A在对数据进行修改时,事务A等待一段时间,此时在等待过程中,事务B记录下了A对数据修改的结果,等待时间过后,事务A继续修改,此时事务B误将这次的结果作为最终结果记录下来。
这就是脏读。

2.不可重复读
存在三个事务ABC。
事务A对数据进行修改,接下来事务B进行读取数据(事务B的多个SQL都要进行读操作),在执B的过程中,又有一个事务C对数据进行了修改。

就会使B里面的不同读操作,读出来的结果不一样。
在这里插入图片描述

所以再进一步规定。进一步加锁–读加锁

3.幻读

事务A先修改并提交数据。事务B进行读取数据。此时事务C没有修改事务B读取的数据,但是给对应的表进行了新增数据/删除数据等操作…导致事务B读到的数据集不同(已有的数据是一致的,只是数据的条数增加/减少),可以视为是“不可重复读”的特殊情况。

解决幻读:
所以的事务,“串行化”使事务严格按照一个接一个进行执行,此时完全没有并发了,执行的效率最低,同时事务的隔离性最高。

总结:

  1. 脏读–写加锁
  2. 不可重复读–读加锁
  3. 幻读–串行化

在解决实际问题中,要想要保证数据的准确性,就需要牺牲一些效率。具体跟业务场景所定。

上一篇:【Flume】尚硅谷学习笔记


下一篇:Git仓库