数据库理论---事务

一、什么是事务?

事务是数据库中操作的最小单元,是作为单个逻辑工作单元执行的一系列操作(数据库的操作);这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)

二、事务的四大特性:

  • 原子性:事务中的操作要么全做,要么全不做。
  • 一致性:事务的执行结果是将数据库从一个一致性状态转变成另一个一致性状态 。也就是说事务执行前和执行后都必须处于一致性状态。
    比如:A+B=C,无论A和B的值是如何变化的,他们的和必须是等于C的,这就是事务的一致性。
  • 隔离性:一个事务的执行不能够被其他事务打扰。
  • 持久性:事务一旦提交,对数据库的改变是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

三、事务的隔离级别

并发问题
1、什么是并发操作?

并发是数据库的一个重要特征,支持数据共享,也就是说允许多个用户程序并行地存取数据库中的数据;那么,多用户或多事务可能同时对同一数据进行操作,这就达成了并发操作。

2、并发操作解决什么问题?会产生什么问题?

事务的并发主要是为了提高效率,但同时它也带来了一定的问题--------------会产生数据的脏读、不可重复读、幻读问题。

  • 脏读:事务A更新了一条数据但还没有提交,此时事务B获取了该条数据,如果事务A发生异常,产生事务回滚,这时事务B读取到的数据就是脏数据(临时并且是无效的),这种现象被称为脏读。

  • 不可重复读:事务A多次读取了一个字段,在读取间隔中,事务B更新了该字段并提交之后,当事务A再次读取该字段时,获取到的数据和之前的数据不一致,这种现象称为不可重复读,产生的原因是数据的更新

  • 幻读:事务A和事务B从表中读取字段,然后事务B新增了字段或者删除了字段并提交,当事务A再次读取的时候,发现读取的结果和之前的不一致,会有一种幻觉的感觉,这种现象称为幻读。主要是数据的新增或删除导致的。

  • 注意:还有一个叫“幽灵数据”,幽灵数据与脏数据类似,不过幽灵数据是指事务提交之后读取到的数据,但是在读取之后又进行了对前一事务进行了恢复,而脏数据是指并未提交前读取的数据。

3、 隔离级别(由低到高)
  • 1、读未提交 Read uncommitted**:一个事务读取到其他的事务未提交的数据,
    ----------缺点:会出现脏读,不可重复读,幻读

  • 2、读已提交 Read committed**:一个事务读取到其他的事务已经提交的数据 (Oracle默认的隔离级别)
    ----------缺点:会出现不可重复读,幻读

  • 3、可重复读 Repeatable read**:一个事务对同一份数据读取到的项目,不在乎其他事物对数据的修改。(MySQL默认的隔离级别)
    ----------缺点:会出现幻读

  • 4、序列化(串行化)Serializable**:事务串行化执行,隔离级别最高,牺牲了系统的并发性。
    ----------缺点:可以解决并发事务的所有问题。但是效率低下,消耗数据库性能,一般不使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值