欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring、Mysql事务

程序员文章站 2022-09-14 11:50:25
1. 什么是事务?事务是指访问和操作数据库各种数据项的一个执行单元. 需要满足事务的四个特性2. 事务的特性原子性即不可分割,事务要么全部被执行,要么全部不执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生变化;如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换。一致性事务的执行使得数据库从一种正确状态转换成另外一种正确状态隔离性在事务正确提交之前,不允许把事务对该数据的改变提供给任何其他事务,即在事务正...

1. 什么是事务?

事务是指访问和操作数据库各种数据项的一个执行单元. 需要满足事务的四个特性

2. 事务的特性

  1. 原子性
    即不可分割,事务要么全部被执行,要么全部不执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生变化;如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换。

  2. 一致性
    事务的执行使得数据库从一种正确状态转换成另外一种正确状态

  3. 隔离性
    在事务正确提交之前,不允许把事务对该数据的改变提供给任何其他事务,即在事务正确提交之前,它可能的结果不应该显示给其他事务。

  4. 持久性
    事务正确提交之后,其结果将永远保存在数据库之中,即使在事务提交之后有了其他故障,事务的处理结果也会得到保存。



3. 事务产生的问题

  1. 脏读: 事务A读到了事务B还没提交的数据
  2. 不可重复读: 在一个事务里面读取了两次某个数据,读出来的数据不一致
  3. 幻读: 同一个事务内多次查询返回的结果集不一样。
    比如同一个事务A第一次查询时有n条记录,但是第二次同等条件下查询却有n+1条记录,这就好像发生了幻觉。
    发生幻读的原因也是另外一个事务新增或者删除或者修改了第一个事务结果集里面的数据,同一个记录的
    数据内容被修改了,所有数据行的记录就变多或者变少了。

====================================================================================================

4. 事务的隔离级别

“默认数据库”
读未提交:即能够读取到没有被提交的数据
读已提交:即能够读到那些已经提交的数据,自然能够防止脏读
可重复读:如果在同一个事务中SELECT语句产生的结果数据集总是相同的
串行化:不管多少事务,依次运行

本文地址:https://blog.csdn.net/weixin_46121031/article/details/107158396

上一篇: MYSQL多实例

下一篇: BBS论坛(十)