数据库_事务

事务

指某些逻辑单元操作统一为一组,这组操作要么都完成,要么都不完成。
目的是为了数据的安全,有效,符合逻辑。
--------从提交事务结束 到第二次提交事务结束,之间的所有逻辑操作单元都统一为一组

事务有以下几个特点

  • 原子性:所有事务的执行,要么都完成,要么都不完成。
  • 一致性:事务完成时,要求所有数据都有一致的状态。即:通过事务对表进行修改,必须在所有相关表中都有反应。
  • 隔离性:事务应该在另一个事务对数据修改前或修改后进行访问。即不能有两个同时进行的事务。事务提交了才可以让别的客户端读取到
  • 持久性:保证通过事务修改的数据是持久有效的。即使发生系统故障也不应该丢失。

事务发生并发问题时有以下几个隔离的级别
在这里插入图片描述

  • 丢失更新:两个事务进行同时存储。但可能只有一个事务成功了。另一个事务的操作丢失。
  • 脏读 : 事务1更新的一组操作,但是还没进行提交,事务2 就读取到了事务1更新后的操作。如果这个时候事务1回滚。那么事务2读取的数据无效,这类数据被称为脏读。
  • 不可重复读: 事务1读取了一行数据,同时事务2修改了这行数据,事务1再取读的时候发现记录的第一次不同,这样被称为不可重复读(重复读会有问题)
  • 幻读: 事务1 用where方式读取多行数据,此时事务2修改了数据,且数据修改后恰好满足了事务1的where条件。当事务1再次查询的时候,在结果集中看到了事务2修改后的数据。新记录被称为幻读。
  • 读未提交——并发时,事务1还未提交的数据也可以被读取到
  • 读已提交——只有提交了的事务才可以被其他事务读取到。
  • 可重复读——事务1进行的时候读取的时候,对事物一进行事务2 不能进行修改操作。
  • 串行读——事务只能一个接一个地执行,不能并发执行。性能特别低

Oracle默认时 read committed级别
Oracle 支持上述四种隔离级别中的两种:read committed 和serializable

Oralce 中还定义 Read only 和 Read write 隔离级别
Read write:它是默认设置,该选项表示在事务中可以有访问语句、修改语句,但不经常使用
Read only:事务中不能有任何修改数据库中数据的操作语句

事务的开启

自动开启于 DML 操作的 insert delete update 语句

事务的结束
成功
  • 正常执行完成的 DDL语句:create、alter、drop
  • 正常执行完的DCL语句 GRANT、REVOKE
  • 正常退出的SQL客户端 如:SQLPlus
  • 隐式事务,SET AUTOCOMMIT ON
  • commit ——提交操作
事务失败
  • 非法退出 意外的断电

  • rollback——手动回滚操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值