数据库事务ACID四大特性:原子性、一致性, 隔离性, 持久性
数据库的事务必须满足4个特性: 原子性, 一致性, 隔离性, 持久性,它们英文单词首字母合起来就是:ACID
在这些事务特性中,数据“一致性”为最终目标,其他特性都是为达到这个目标而采取的措施和手段。 数据库管理系统一般采用重执行日志来保证原子性、一致性和持久性。重执行日志记录了数据库变化的每一个动作,数据库在一个事务中执行一部分操作后发生错误退出,数据库即可根据重执行日志撤销已经执行的操作。对于已经提交的事务即使数据库崩溃,在重启数据库时也能后根据日志对尚未持久化的数据进行相应的重执行操作。
1、事务原子性
定义:事务中的多个数据库操作是一个不可分割的原子单元整体,只有所有的操作执行成功,整个事务才提交。事务中的任何一个数据库操作失败,已经执行的任何操作都必须被撤销,让数据库返回初始状态。
实现:事务内的一组操作全部成功(或者全部失败),为了实现原子性,就需要通过日志:将所有对数据的操作都写入日志,如果事务中的一部分操作已经成功,但后面部分操作,因为系统断电,操作系统崩溃等问题而没有成功执行,那么就要通过回溯日志,将前面已经成功执行的操作撤销,从而达到"全部执行失败"的效果。
2、事务一致性
事务操作成功后,保证数据不会被破坏。如A账户转账100元到B账户,不管操作成功与否,A和B账户的存款总额是不变的。
一致性分为数据库外部一致性和内部一致性:
i、数据库外部一致性:由外部的应用编码来实现,即银行的应用在进行转账的操作时,必须在同一事务内部调用对账户A和账户B的操作。如果在这个阶段出现错误,这不是数据库本身能解决的,也不属于我们要讨论的范围。
ii、数据库内部的一致性:在同一个事务内部的一组操作必须全部成功(或者全部失败) 这就是事务原子性
3、持久性
一旦事务提交成功后,事务中所有的数据操作都必须被持久化到数据库中。即使在事务提交后,数据库马上崩溃,在数据库重启时,也必须保证能够通过某种机制恢复数据。
4、事务隔离性
详细转载此篇博客:
引用:https://blog.csdn.net/u014079773/article/details/52808193
1)事务并发所引起的问题:
脏读:一个事务读到另外一个事务还没有提交的数据,我们称之为脏读。(进行存款事务时候,还没有存完,允许查询事务)
不可重复读(Unrepeatable Read)
在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交而引起的。
例如:事务B中对某个查询执行两次,当第一次执行完时,事务A对其数据进行了修改。事务B中再次查询时,数据发生了改变
幻读(phantom read)
幻读,是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样.
2)JDBC(隔离方案)事务隔离的四个级别:
1.READ_UNCOMMITTED
2.READ_COMMITTED
3.REPEATABLE_READ
4.SERIALIZABLE
从上往下,级别越来越高,并发性越来越差,安全性越来越高
脏读 | 不可重复读 | 幻读 | |
Serializable | 不会 | 不会 | 不会 |
REPEATABLE READ | 不会 | 不会 | 会 |
READ COMMITTED | 不会 | 会 | 会 |
Read Uncommitted | 会 | 会 | 会 |
3)Spring(隔离方案)事务传播行为
1.PROPAGATION_REQUIRED
2.RROPAGATION_REQUIRES_NEW
3.PROPAGATION_NESTED
4.PROPAGATION_SUPPORTS
5.PROPAGATION_NOT_SUPPORTED
6.PROPAGATION_NEVER
7.PROPAGATION_MANDATORY
Spring还有事务隔离级别、事务传播行为、事务超时时间、是否只读事务
1.事务超时(Transaction Timeout):为了解决事务时间太长,消耗太多的资源,所以故意给事务设置一个最大时常,如果超过了,就回滚事务。
2.只读事务(Readonly Transaction):为了忽略那些不需要事务的方法,比如读取数据,这样可以有效地提高一些性能。
数据库事务ACID四大特性:原子性、一致性, 隔离性, 持久性相关推荐
- 数据库事务的四大特性ACID
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
- 数据库事务的四大特性以及隔离级别
本篇文章主要介绍数据库事务的四大特性ACID,以及数据库的隔离级别. 事务 概念 事务指的是满足 ACID 特性的一系列操作.在数据库中,可以通过 Commit提交一个事务,也可以使用 Rollbac ...
- 数据库事务的四大特性和四个隔离级别
一.数据库事务的四大特性 事物是指作为一个单元的一组有序的数据库操作,单元是不可分割的,如果一组数据的所有操作都执行成功,事物完成,进行事物提交(commit),其修改作用于所有数据库进程.有一个操作 ...
- 数据库事务的四大特性(ACID)
数据库事务的四大特性 1, 什么是数据库事务? 数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成. 意思就是一连串的数据库操作,即一串增删查改的集合. 2, 数据库 ...
- 数据库事务及其四大特性
数据库事务是数据库运行中的逻辑工作单位,单个逻辑工作单元所执行的一系列操作,要么都执行,要么都不执行.例如银行取款事务分为2个步骤(1)存折减款(2)提取现金,2个步骤必须同时完成或者都不完成. 数据 ...
- MySQL数据库事务的四大特性
MySQL数据库事务的四大特性以及事务的隔离级别_l1394049664的博客-CSDN博客_mysql数据库事务 深入学习MySQL事务:ACID特性的实现原理 - 编程迷思 - 博客园
- 数据库事务的四大特性和隔离级别
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么全部执行,要么全部都不执行. 一个逻辑工作单元要成为事务,必须满足事务的四大特性(ACID).即 ...
- 数据库事务的四大特性以及事务的隔离级别
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
- 数据库事务的四大特性以及事务的隔离级别详解
作者 : fjdingsd 来源 : 博客园 本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ ...
- 数据库事务的四大特性及事务隔离级别
概要: 事务的四个特性:原子性.一致性.隔离性.持久性 事务不隔离带来的问题:更新丢失.脏读.不可重复读.虚读(幻读).其中更新丢失就是并发写,这是一定不允许的,因此一定要解决更新丢失问题. 事务隔离 ...
最新文章
- 关于HA-MIR镜像双机虚拟IP与周立功CANET-200T采用UDP模式通讯技巧
- 云炬创业政策学习笔记20210113
- mysql性能优化的一些建议
- 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)
- c语言c99标准_自学C语言之一
- php中对象的遍历输出,PHP中的对象遍历技巧
- 不同Linux主机下文件的拷贝
- THINKPHP中使用swoole
- linux 破解版confluence安装
- 项目管理笔记(观念)
- 一个简单的姓名生成器
- 统计自然语言处理(第2版)目录
- PowerDesigner 逆向工程 Could not Initialize JavaVM!
- java解析返回报文_Java解析json报文实例解析
- python与建筑结构设计_29个常见的结构设计问题盘点
- 《黑客秘笈——渗透测试实用指南(第2版)》—第2章2.3节外部或内部主动式信息搜集...
- 配置node服务器并且链接微信公众号接口配置(超详细)
- ArcMap-network analyst
- 移动直播之网红主播怎样将直播内容推到斗鱼直播平台的方案
- android 屏蔽实体按键,Android中屏蔽返回键,home键以及其他实体按键
热门文章
- java计算机毕业设计会议查询系统源程序+mysql+系统+lw文档+远程调试
- 应届生HR面试需要准备的六大类问题
- 网页数据库服务器连接超时,数据库连接超时的解决方法
- Unity-遮挡剔除
- R语言数据可视化-条形图
- emv交易流程介绍_(精)EMV流程介绍.ppt
- CPU内存乱序访问与内存屏障
- GraphRNN: Generating Realistic Graphs with Deep Auto-Regressive Models
- 事业单位招聘计算机岗位考试题,计算机考试题库:计算机考试练习题(136)
- iOS平台 - HBuilder - 自定义基座安装失败(return code=-402620395)