数据库 事务

事务是指作为单个逻辑工作单元执行的一组相关操作。这些操作要求全部完成或者全部不完成。使用事 务是为了保证数据的 安全有效

1.事务的特点

1. 原子性(Atomic):事务中所有数据的修改,要么全部执行,要么全部不执行。 2. 一致性(Consistence):事务完成时,要使所有所有的数据都保持一致的状态,换言之:通过事 务进行的所有数据修改,必须在所有相关的表中得到反映。 3. 隔离性(Isolation):事务应该在另一个事务对数据的修改前或者修改后进行访问。 4. 持久性(Durability):保证事务对数据库的修改是持久有效的,即使发生系统故障,也不应该丢 失

2.事务的隔离级别

从上到下,隔离级别变高,安全性变高,效率变低

Repeatable read:事务A操作表结构的时候进行了锁行,所以必须等A事务操作完毕才可以让其他事务进行操作,实现了可重复读。

幻读:A事务where进行读取的时候读取了三条有效数据,B事务采用insert插入了一条符合A十五where语句的信息,A事务再次读表的时候就会读取四条数据,导致出现了幻读的发生。

Serializable:相当于锁表,比克重复读的隔离级别更高。

Oracle 默认的隔离级别是 read committed。 Oracle 支持上述四种隔离级别中的两种:read committed 和 serializable。除此之外, Oralce 中还定义 Read only 和 Read write 隔离级别。 Read only:事务中不能有任何修改数据库中数据的操作语句,是 Serializable 的一个子集。 Read write:它是默认设置,该选项表示在事务中可以有访问语句、修改语句,但不经常使用。

丢失更新:两个事务同时存储, 一个存储 100 , 一个存储 200,最终可能至存储了 200 或者 100,那 另一个的更新就没成功,即结果不为预想的 300 脏读:事务 T1 更新了一行数据,还没有提交所做的修改,T2 读取更新后的数据,T1回滚,T2 读取的数 据无效,这种数据称为脏读数据。 不可重复读:事务 T1 读取一行数据,T2 修改了 T1 刚刚读取的记录,T1 再次查询,发现与第一次读取 的记录不相同,称为不可重复读。 幻读:事务 T1 读取一条带 WHERE 条件的语句,返回结果集,T2 插入一条新纪录,恰好也是 T1 的 WHERE 条件,T1 再次查询,结果集中又看到 T2 的记录,新纪录就叫做幻读。

3.事务的开启

自动开启于 DML 之 insert delete update 默认开启

4.事务的结束

(1.成功

手动提交:commit

正常执行完DDL语句:create, alter, drop

正常执行完DCL语句:GRANT,REVOKE

正常退出的SQLPlus 或者 SQL Developer 等客户端

如果人工需要隐式事务,SET AUTOCOMMIT ON (只针对一个连接)

(2.失败

意外退出,强制断电

手动提交:使用rollback

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值