MySql的事务是什么?什么是脏读、幻读、不可重复读?

一、Mysql的事务( transaction):

        概念:指访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行(回滚),是一个不可分割的最小单元(unit)。事务由事务开始与事务结束之间执行的全体操作组成。

1. 事务的特性(简称:ACID

        (1)原子性:( Atomicity )事务是不可分割的原子单位,也就是说数据的操作要不然一起成功,要不然一起失败。即事务提交事务回滚。

        (2)一致性:(Consistency)事务的执行不能影响数据库数据的完整性和一致性。即在事务执行前和执行后数据库都是一致性状态。这个和原子性是密切相关的。

        (3)隔离性:(isolation)针对于并发来讲的。一个事务的执行不会对其他事务造成干扰。即并发事务之间是隔离的,不能互相干扰。

        (4)持久性:(durability)也成为永久性,指的是一个事务提交后对数据库的改变时永久性的,接下来的其他操作或者故障对其不会产生影响。

二、什么是脏读、幻读、不可重复读?

       1. 概念:脏读、幻读、不可重复读是事务的隔离级别中,事务并发遇见的最常见的问题。

        (1)脏读:简言之就是一个事务可以读取到另一个事务没有提交的数据,由于某些原因这条没有提交的数据执行了Rollback(),那么这个事务(红色的)读取到的数据就是不正确的。

        (2)幻读:一个事务内两次读到的同一条件数据的(行数)结果不同,好像出现了幻觉。比如一个事务在做对全部数据的统一修改操作,与此同时第二条事务也对此表进行插入一条新数据,那么在第一个事务在后面就会发现还有未修改的数据。

        (3)不可重复读:一个事务两次读到的同一条件数据的(内容)结果不同。比如在一个事务内,两次读同一数据。在第一次读完之后但是事务还没有结束时,另外一个事务也访问并修改同一数据。那么,在第一个事务中的第二次读数据时数据可能是不一样的。

        2.隔离级别中 脏读、幻读、不可重复读的问题

隔离级别脏读幻读不可重复读
READ UNCOMMITTED(读取未提交)存在存在存在
READ COMMITED (读已提交)不存在存在存在
REPEATABLE READ (可重复读)不存在不存在存在
SERIALIZABLE (串行化)不存在不存在不存在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l1050188952

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值