Oracle 事务ACID的特性
1.事务对数据库控制操作
事务(Transaction)是用户定义的一个数据库操作序列,是不可分割的一部分的整体。这些操作要么做,要么不做(原子性)。事务是对数据库对进行操作的最基本的逻辑单位,他可以是一组SQL语句或者一条SQL语句或者整个程序,通常情况一个应用程序应该包含多个事务,此外,事务是恢复和并发控制的基本单位。
2.事务的特性
事务的的四大特性(ACID)
原子性:A (Atomicity) 事务是数据库的逻辑工作单位,事务中的操作要么做,要么就不做。
一致性:C(Consistency) 事务的结果必须是数据库从一个一致性到另一个一致性的状态。(一致性是指数据库执行成功的结果,不一执行是指数据库中也包含执行失败的结果)
隔离性:I (Isolation) 一个事务的执行不能被其他事务所干扰。一个事务内部的操作及使用的数据对对其他并发事务是隔离的,并发的执行的各个事务之间不能相互干扰。
持久性:D(Durability)一个事务一旦提交,其数据库中数据的改变应该是永久的,该事务中接下来的其他操作或产生的故障不应该对其执行结果有任何影响.
例子:取钱
某个银行数据库转帐 A(10000)A向B转账1000 B(原1000)
[第一步确定A账户是否有1000]
[第二步 A-b=9000]
[第三 写入A账户9000]
[第四步 B账户余额为1000]
[第五 写入账户B+1000]
[第六] 写入2000
转账事务处理流程
在正确执行的情况下,A的余额是9000,B的余额是2000,二者的金额之和等于事务未发生之前的和,称之为数据库的数据从一个一致性状态转移到了另一个一致性的状态,数据的完整性和一致性得到了保障。
假如在事务的处理过程中完成了第三步,未完成第六步,过程中出现了断电,这样就会出现A=9000,B=1000.很显然 一致性遭到了破坏,不能反映数据库的真是情况。因此必须还原到A=10000 B=1000的真实情况,进行回滚,这就是原子性的含义.——实现原子性(对于事务中的写操作的数据项,数据库系统在磁盘上记录着旧值,如果事务如果没有完成,没有全部就必须回滚,这就是原子性的含义).
3.事务状态
提交状态和中止状态的事务叫做已经解决的事务,处于活动中,部分提交状态和失败状态的事务称为未解决的事务
Oracle 事务ACID的特性的更多相关文章
- 【原创】Mysql中事务ACID实现原理
引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" 你:"懂,ACID嘛,原子性(Atomicity).一致性(Consistency).隔离性(Isol ...
- Mysql中事务ACID实现原理
引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?"你:"懂,ACID嘛,原子性(Atomicity).一致性(Consistency).隔离性(Isola ...
- 【转】Mysql中事务ACID实现原理
转自:https://www.cnblogs.com/rjzheng/p/10841031.html 作者:孤独烟 引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" ...
- Oracle事务的ACID特性
Oracle事务的ACID特性 1.原子性(Atomicity) 事务的原子性是指事务中包含的所有操作要么都做,要么都不做,保证数据库是一致的. 例如:A帐户向B帐户划账1000,则先将A减少1000 ...
- 数据库中事务的四大特性(ACID)
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
- 【概念原理】四种SQL事务隔离级别和事务ACID特性
摘要: SQL事务隔离级别和事务的ACID特性 事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性. 事务隔离级别 SQL事务隔离级别由弱到强分别是:READ_UNCOMMITTED.R ...
- 什么是事务?事务的四个特性(ACID)?并发事务带来哪些问题?事务隔离级别都有哪些?事务的传播特性
什么是事务? 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事物的四个 ...
- 事务的四大特性(ACID):
事务的四大特性(ACID): 1.原子性(Atomicity): 事务中所有操作是不可再分割的原子单元.事务中所有操作要么都执行成功,要么都执行失败. 2.一致性(Consistency): 事 ...
- 事务ACID特性
所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行. 数据库事务必须具备 ...
随机推荐
- 【程序人生】一个IT人的立功,立言,立德三不朽
最近几个月很忙,忙着当奶爸,忙着做加班狗,忙着补裤裆学技术……以至于快忘了要思考人生了! 古人立志穷极一生追求“立德”,“立功”,“立言”,以求不朽,为万世所景仰,为后人所传颂,实现人生的意义.立德者 ...
- javascript树形汇总金额
在开发企业应用的时候总会遇到树形汇总金额的场景,即将树形的列表中的叶子节点(没有子节点)的金额汇总到父节点上. 这种需求一般是在前端进行处理,即使用JavaScript处理,因为叶子节点的金额可能是不 ...
- 开源Odoo13更新的模块功能信息(译文)
本文来源江苏欧度软件:www.odooyun.com 本次Odoo13已于10月初发布,更新的模块有:Odoo会计模块.Odoo活动项目模块.Odoo13审批模块.Odoo评价.客户关系管理(CRM) ...
- iOS WKWebView与JS的交互
参考链接:https://www.jianshu.com/p/524bc8699ac2
- VS2019 开发Django(四)------models
导航:VS2019开发Django系列 继上篇我们匆匆迁移数据库成功之后,又花了一个晚上研究了Django的模型,这里的模型其实就是ORM模型中的Entity,.Net里边用的比较多的有Entity ...
- Dubbo学习笔记-RPC扩展和本地Mock
1.Dubbo介绍 Dubbo,一个是一款高性能Java RPC框架.私以为有中文官方文档,就不再重复介绍了 2.RPC扩展-本地存根stub RPC扩展功能:提前效验参数,缓存调用结果,日志记录等等 ...
- Linux日志中如何查找关键字及其前后的信息
在日常工作中,我们经常需要查看日志,比如可以通过 tail 命令实时查看日志,也可以通过 cat 等命令查看日志信息. 但现在我们要讨论的是,如何从日志中通过关键字过滤出我们想要的内容,方法有多种,今 ...
- C# -- 多线程向同一文件写入
1. 多线程向同一文件写入Log. public delegate void AsyncLog(string str1, string str2); private void Test() { Con ...
- TensorFlow实现图像卷积并可视化示例
图片尺寸要自己修改. 看起来好像没啥意思,不知道下一步能干什么,先卷了再说.由于weights是随机生成的(tf.random_normal作用:用于从服从指定正太分布的数值中取出随机数),所以每次卷 ...
- 【坑】Maven [ERROR] 不再支持源选项 5。请使用 6 或更高版本
在pom.xml文件中添加如下代码: 注意:jdk使用自己下载的版本,我的是13 <properties> <project.build.sourceEncoding>UTF- ...