oracle事务隔离级别

文章目录


数据库事务概况

一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退。

1.事务相关概念

1)事务的提交和回滚:COMMIT/ROLLBACK

2)事务的开始和结束

开始事务:连接到数据库,执行DML、DCL、DDL语句

结束事务: 1. 执行DDL(例如CREATE TABLE),DCL(例如GRANT),系统自动执行COMMIT语句

  1. 执行COMMIT/ROLLBACK

  2. 退出/断开数据库的连接自动执行COMMIT语句

  3. 进程意外终止,事务自动rollback

  4. 事务COMMIT时会生成一个唯一的系统变化号(SCN)保存到事务表

3)保存点(savepoint): 可以在事务的任何地方设置保存点,以便ROLLBACK

2.事务的四个特性ACID :

  1. Atomicity(原子性): 事务中sql语句不可分割,要么都做,要么都不做

  2. Consistency(一致性) : 指事务操作前后,数据库中数据是一致的,数据满足业务规则约束(例如账户金额的转出和转入),与原子性对应。

  3. Isolation(隔离性):多个并发事务可以独立运行,而不能相互干扰,一个事务修改数据未提交前,其他事务看不到它所做的更改。

  4. Durability(持久性):事务提交后,数据的修改是永久的。

5) 死锁:当两个事务相互等待对方释放资源时,就会形成死锁

oracle事务隔离级别

1 .两个事务并发访问数据库数据时可能存在的问题

  1. 幻想读:

事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录并commit,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。

  1. 不可重复读取:

事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录并commit,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。

  1. 脏读:

事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。

相关推荐
paid槮26 分钟前
MySQL的简单介绍
数据库·mysql
22jimmy2 小时前
JavaWeb(二)CSS
java·开发语言·前端·css·入门·基础
vvilkim5 小时前
Java主流框架全解析:从企业级开发到云原生
java·运维·云原生
MZ_ZXD0016 小时前
springboot汽车租赁服务管理系统-计算机毕业设计源码58196
java·c++·spring boot·python·django·flask·php
A 计算机毕业设计-小途6 小时前
大四零基础用Vue+ElementUI一周做完化妆品推荐系统?
java·大数据·hadoop·python·spark·毕业设计·毕设
岁忧8 小时前
(nice!!!)(LeetCode 每日一题) 679. 24 点游戏 (深度优先搜索)
java·c++·leetcode·游戏·go·深度优先
不羁。。9 小时前
【撸靶笔记】第八关:GET - Blind - Boolian Based - Single Quotes
数据库·sql·mybatis
AwhiteV10 小时前
利用图数据库高效解决 Text2sql 任务中表结构复杂时占用过多大模型上下文的问题
数据库·人工智能·自然语言处理·oracle·大模型·text2sql
m0_5951998510 小时前
Redis(以Django为例,含具体操作步骤)
数据库·redis·缓存
爱尚你199310 小时前
MySQL 三大日志:redo log、undo log、binlog 详解
数据库·mysql