数据库事物

事物(transation)

基本概述

  • 一个事物其实就是一个完整的业务逻辑,是最小的工作单元,不可再分。
  • 只有DML语句才会有事物,其他语句与事物无关。
  • 本质上,事物就是多条DML语句同时成功,或同时失败。

SQL分类

  • DQL(Data Query Language):数据查询语言,关键字:select。
  • DML(Data Manipulation Language):数据操纵语言,关键字:insert,delete,update。
  • DDL(Data Definition Language):数据库定义语言,关键字:creat,drop,alter。
  • DCL(Data Control Language):数据库控制语言,关键字:grant,revoke。
  • TCL(Transation Control Language):事物控制语言,关键字:commit,rollback。

事物的提交与回滚

  • 事物提交:清空事物性活动日志文件,将数据全部彻底持久化到数据库中;提交事物标志着事物的结束,并且是一种全部成功的结束。
  • 事物回滚:将之前所有的DML操作全部撤销,并且清空事物性活动日志文件;事物回滚标志着事物的结束,并且是一种全部失败的结束。

事物的四个特性

A (Atomicity):原子性,事物是最小的工作单元,不可再分。
C (Consistency):一致性,在同一个事物中,所有的操作必须同时成功,或同时失败,以保证数据的一直性。
I (Isolation):隔离性,两个不同的事物操作是,具有一定隔离性。
D (Durability):持久性,事物的最终结果,事物提交就是将没有保存到硬盘上的数据保存到硬盘上。

事物隔离性的4个级别及存在的问题

  • 读未提交:read uncommitted,最低的隔离级别,没有提交就被读到。
    事物A可以读到事物B的没有提交的数据;
    存在问题:脏读现象(当开始事物A后,B事物同时操作一个数据,B事物对数据的操作还没提交就可以被A事物读到,若事物B回滚,则A事物读到的数据就是脏数据)。

  • 读已提交:read committed,提交之后才能读到。
    事物A只能读取到事物B提交后的数据;
    存在问题:不可重复读,(当开启事物A后,B事物同时操作一个数据,在事物B提交后,A事物会读取到不同的数据)。
    解决问题:解决了脏读现象。

  • 可重复读:repeatable read,提交时候也读取不到,读到的永远是开启事物时的数据。
    事物A开启后,当事物B同时操作同一个数据时,即使对数据进行了修改并且提交,事物A读取不到事物B提交后的数据。
    存在问题:幻读现象。(读取到的不是真实数据)
    解决问题:解决了脏读现象。

  • 序列化、串行化:serializable(最高的隔离级别)
    这是最高隔离级别,效率最低。解决了所有的问题。
    这种隔离级别表示事务排队,不能并发,每一次读取到的数据都是最真实的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

似寒若暖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值