数据库的事务控制和四种隔离级别

数据库的事务控制

原子性:

事务操作不可分割 要么同时成功要么同时失败

一致性:

事务操作前后, 用户获取的数据都是正确的.

隔离性:

每个事务的操作各自独立,互补影响

持久性:

事务一旦提交之后,就会在数据库中保存. (数据落地-保存到磁盘中)

数据库事务控制 :根本原因就是并发问题

三种并发问题

(两个事务(要做或者所做的事情)在并发执行的情况下)

脏读:

事务A读取了事务B更新了但是没有提交的数据,然后事务B进行了回滚,导致事务A读取的数据是错误数据。

不可重复读:

事务A两次读取的数据不一致,也就是在事务A进行业务操作的过程中事务B 将数据进行了更新或删除。导致事务A两次读取的数据不一致。

幻读:

事务A根据条件得到x条数据,然后事务B改变了表中除了这N条数据之外的数据,或者添加了符合事务A条件的数据导致事务A再次根据条件得到的数据是原来的加上事务B修改条件后符合要求的。(也就是说同一条件下同一张表第二次比第一次读取到的行数)

四种隔离级别

(通过隔离级别的设置可以对应避免一些事务并发问题)

串行化(Serializable):

也就是将并发执行改为串行一个一个执行,它可以解决三种并发事务问题,但是会导致执行的效率非常低。

可重复读(REPEATABLE READ)(Mysql默认隔离级别):

它解决了不可重复读和脏读的问题,其实就是事务操作的过程中限制了update(更新的)或者删除的操作,但是避免不了幻读,因为幻读是因为插入操作引起的。

读已提交(READ COMMITTED)( SQL Server和Oracle的默认隔离级别):

只能读到已经提交了的数据,保证一事务A不会读到另外一个并发的事务B已修改但是没有提交的数据,直接避免了脏读,但不能避免不可重复读和幻读。

读未提交(READ UNCOMMITTED):

可以读到未提交的数据,这种隔离级别的一致行最差,使用它三种并发问题都解决不了
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值