(篇七)事务详解

目录

🧶事务的作用: 

🧶事务的四个关键特性:

原子性

一致性

持久性

隔离性

🧶事务隔离性所解决的问题

脏读问题

不可重复读

幻读


事务的作用: 

     在很多情况下我们需要保证几个sql语句都执行成功或者都不执行,比如像是双方之间的互相转账,这个操作涉及到了很多步骤,有修改数据双方的数据,查找数据,我们必须保证这几步都是要执行成功的。即使出现网络问题导致转账失败,我们就要保证这几步都没执行,或者换句话说,保证数据回到执行转账前的样子,为了保证这些就引出了事务。

      事务本质就是把多个sql语句打包在一起,成为一个整体(原子性:要么都执行,要么都不执行)。如果出行类似断网之类情况,数据库就会利用回滚机制将数据还原到执行事务操作之前的样子。(数据库中有专门记录事务操作步骤的日志)。

事务的四个关键特性:

原子性

原子性(初心):保证几个sql是一体的,最核心的特性

一致性

     简单理解,例如上面的转账,我们需要保证转出方账户数据的变动,要与转入方数据的变动要合理。一致性也就体现在数据的变动方面。

持久性

事务修改的内容是写到硬盘上的,持久存在,不会因为断网之类的事故导致数据丢失。

隔离性

为了解决“并发”执行事务,引起的问题

也就是多个客户端一起尝试对同一个账户进行操作

事务隔离性所解决的问题

脏读问题

首先我们要知道什么是脏数据,并不是说这个数据埋汰了,是指当前读到的数据是无效数据

例如:事务A正在进行数据的修改,这时数据B对数据进行了读取,这时数据A还有可能对数据进               行修改,如果修改了,那么事务B所读取的数据就是无效数据,也就是脏数据。

解决方法:给写操作加锁。也就是事务A修改数据时,不允许其他事务来 读数据,是由事务A完成                   了对数据的修改,其他事务才能进行读操作。

不可重复读

在解决脏读问题的基础上,还有不可重复读问题

例如:事务A完成了对数据的修改,事务B对数据进行了读操作,但是在事务B读数据的过程中,               事务A又再次对数据进行了修改,就回导致事务B在读的数据不一致。也就是不可重复读问             题。

 解决方法:给读操作加锁。很显然就是让事务B在进行读操作的时候不会有其他事务来进行对数                       据的修改。

幻读

读操作和写操作前提下,又有了幻读问题

例如:一个事务两次读取一个数据,发现读的数据的值是没有变的,但是读到的数据结果集是不               一 样的。(第一次读有一个java文件,第二次读时这个java文件的数据没有改变,但是读               到的不知有一个java文件,还多了其他文件)

解决方法:数据库使用“串行化”(放弃并发执行,改为并行执行)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值