Mysql中事务是什么?有什么用?( 三 )


隔离性是针对数据资源的并发访问,规定了 各个事务之间相互影响的程度  。
举例:为了疫情防控,各个城市针对于每个人的出行情况,出了对应的隔离级别,例如低风险的回老家就是3天两检,中风险的就是隔离14天,特别严重的就是集中隔离21天,等等 。。。
隔离级别就是为了防止出现问题,而定的规则!
而事务的隔离性也分为了4种类型的隔离级别,这些隔离级别专门用于应对 数据资源并发访问 下不同问题的场景 。(就好比上面的例子,每个隔离级别都是对应一个场景,三天两检就是对应的低风险) 。
1、并发事务下会产生什么问题?什么是并发事务?并发事务就是多个客户端同时开启事务,或者是多个会话同时开启事务!Java当中一个接口就是一个事务,也可以称之为一次会话,接口当中包含了很多sql,当并发访问接口的时候会出现什么问题,也被称为并发事务问题 。当然本篇主要以数据库并发事务产生的问题为主!
隔离级别专门用于应对 数据资源并发访问 下不同问题的场景,那么究竟有哪些问题呢?有三个:脏读、不可重复读、幻读

  • 脏读: 读到了还没有提交事务的数据,简称读未提交
举例:如果一个事务B对数据进行了更改,但是还没有提交,而另一个事务A就可以读到事务B尚未提交的更新结果 。这样,当事务B进行回滚时,那么事务A开始读到的数据就是一笔脏数据 。
Mysql中事务是什么?有什么用?

文章插图
 
  • 不可重复读: 同一个事务在事务过程中,对同一个数据进行读取操作,读取到的结果不同 。
举例:事务 A 多次读取同一数据,但事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致 。
Mysql中事务是什么?有什么用?

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

Mysql中事务是什么?有什么用?

文章插图
 
不可重复读侧重表达 读-读,幻读则是说 读-写,用写来证实读的是鬼影 。
如何避免:
  • 要避免脏读,需要控制在事务没有提交更新前,其他事务无法看到此事务的更新结果 。
  • 要避免不可重复读,假如查询单条数据,可以通过行锁,范围查询可以进行表锁 。
  • 要避免幻读,需要将整张表都锁住了 。
2、事务的隔离级别上述所说的"脏读",“不可重复读”,"幻读"这些问题,其实就是数据库读一致性问题,必须由数据库提供的事务隔离机制来进行解决 。
Mysql中事务是什么?有什么用?

文章插图