事务的属性和mysql的事务隔离级别

5 篇文章 0 订阅

1. 事务和mysql的关系

事务是具有原子性,一致性,隔离性和持久性,而mysql是实现事务的方式之一,mysql根据事务规则来存储和获取数据的

2. 事务的四个特性解释

在一个事务中可以有很多的操作,比如更新操作1,更新操作2,查询操作1等

| -------------- | ------------ | ------------ | ------------- | ------------ | ------------ |

事务开始 更新操作1 更新操作2 查询操作3 更新操作4 更新操作5 事务结束

原子性:指事务一次执行成功或者失败,当在事务的中间出现异常,执行失败,需要回滚到事务开始的阶段

一致性:主要指的数据一致性,当事务执行失败,或者对之前执行过程的数据进行回滚,或者对执行失败步骤的数据进行补偿

隔离性:指事务之前的操作是互相隔离开的,互不影响,但是并发操作存在线程安全的问题

持久性:指的是事务是有状态的,比如事务执行了,之前操作的状态是可以查找的,不会因为外部问题,造成数据查找不到

3. 并发事务造成的数据库问题

并发产生多个事务,如果多个事务操作多条数据,是不会产生事务问题的,但是操作一条数据就会产生问题:

脏读:多个事务操作一条数据,当T1修改了数据,而T2读取T1修改了之后的数据,但是T1事务失败回滚,所以T2读取到的数据就是无效数据,就会出现脏读

不可重复读:多个事务操作一条数据,当T1修改了数据,T2修改了数据,当T3在读取数据时,就会和T1读取的数据不一样,造成了对同一条数据的不可重复读

幻读:是操作多条数据,T1获取的数据条数和T2获取的数据条数不一致造成幻读

4. mysql数据库为了避免并发事务的问题,设置了数据的隔离级别

多个事务对一条数据操作,指的是update操作,读操作不当做事务方式

读未提交的数据:读取事务未提交的数据,多个事务操作一条数据可能造成脏读,不可重复读,操作多条数据可以能造成幻读

读已提交的数据:因为已经提交的数据不会回滚造成一开始读取的失效,所以不会造成脏读,但是多个事务操作一条数据造成不可重复读,操作多条数据可以造成幻读

重复读取数据:禁止多个事务同时操作一条数据,但是在事务执行期间,可以确保多次读取的数据都是重复的,但是幻读避免不了,实际是就是锁行

串行化:锁表,在一个事务执行时,该表数据就会被锁定,在事务执行期间,可以确保多次读取数据的行数是一致的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值