什么是事务,事务的四大特性,并发事务的问题以及解决方案。

事务的介绍:

事务是用户定义的一系列执行SQL语言的操作,这些操作要不都完全执行,要么都完全不执行,是一个不可再分的工作执行单元。

事务的四大特性:

  • 原子性(Atomicity)

  • 一致性(Consistency)

  • 隔离性(Isolation)

  • 持久性(Durability)

>原子性:

        一件事务的每一步要不完全都执行,要不每一步都不执行(失败回滚),它不能只执行其中的某一部操作,它是一个不可再分的工作执行单元。

>一致性

        一件事务执行前后保持一致的状态,不管事务是否成功,事务前到达的一致性的状态,事务后也需要到达另一个一致性的状态。

>隔离性

        一件事务的执行是不会被其他事务所干扰。

>永久性

        事务一旦被提交,对数据库的改变是永久性的,其他操作并不会对其有任何影响。

并发事务的问题

脏读:一个事务在处理数据时读取了另一个没有提交事务中的数据。

        B事务插入某数据但并未提交,A事务查询该数据得到B事务未提交的数据。

不可重复读:一个事务在做多次查询语句的时候返回了不同的结果。

        解决脏读后,A事务在查询某数据后,数据库显示没有该数据,此时B事务插入该数A并提交,A事务再次查询该数据,数据库显示该数据,两次返回结果不一样。

幻读

说法一:一个事务在查询时,查不到该数据,但是插入时却显示有数据。

        解决不可重复读后,A事务查询某id,数据库显示没有,此时B事务插入该id并提交,A也插入该id却插不进,查询后依然显示该id没有。

说法二:和不可重复读类似,不可重复读是数据改没改变,幻读是数据存不存在。

        A事务查询按照某一条件得到了 N 条数据,此时B事务删除或者增加了 M 条符合该条件的数据,当A事务再次进行查询的时候真实的数据集已经发生了变化,但是A却查询不出来这种变化。

解决并发事务的方法

        事务的隔离级别

                                                                       脏读             不可重复读            幻读

  • 读未提交(READ UNCOMMITTED)           X                         X                       X

  • 读已提交(READ COMMITTED)                √                          X                       X

  • 可重复读(REPEATABLE READ)                √                         √                        X

  • 可串行化(SERIALIZABLE)                         √                         √                        √ 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值