一、事务的概念

事务是用户定义的一个数据库操作序列,这些操作要么全不做,要么全做,是一个不可分割的工作单位。例如在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或者整个程序。

事务和程序是两个概念。一般的讲一个程序包含多个事务。

事务的开始与结束可以有用户显式控制。如果用户没有显式的定义事务,则由数据库管理系统DBMS按默认规定自动划分事务。在SQL中,定义事务的语句一般有三条:

  • BEGIN TRANSACTION;
  • COMMIT;
  • ROLLBACK;

事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,即提交事务的所有操作。具体的说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中,事务正常结束。ROLLBACK表示回滚,即在事务的运行过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。这里的操作指对数据库的更新操作。

二、事务的ACID特性

事务具有四个特性:原子性(Atomicity)、持续性(Durability)、一致性(Consistency)和隔离性(Isolation)。这四个特性简称ACID特性(ACID Properties)

1)原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作,要么全做,要么全不做

2)一致性:事务的执行结果必须是使数据库从一个一致性状态变到另外一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所做的修改有一部分已经写入到物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。例如,某公司在银行中有A,B两个账号,现在公司想从账号A中取出一万元,存入账号B。那么就可以定义一个事务,该事务包括两个操作,第一个操作是从账号A中减去一万元,第二个操作是向账号B中加入一万元。这两个操作要么全做,要么全不做。全做或者全不做,数据库都处于一致性状态。如果只做一个操作,则逻辑上就会发生错误,减少或增加一万元,这时数据库就处于不一致性状态了。可见原子性与一致性是密切相关的。

3)隔离性:一个事务的执行不能被其他事务干扰。即一个事务的内部操作及使用对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰

4)持续性:持续性也称永久性(Permanence)指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的操作或故障不应该对其执行结果产生任何影响。

事务是恢复和并发控制的基本单位所以下面的讨论均已事务为对象。

保证事务的ACID特性是事务管理的重要任务,事务ACID特性遭到破坏的因素有:

1)多个事务并行运行时,不同事务的操作交叉执行;

2)事务在运行过程中被强行停止。

在第一种情况下,数据库管理系统必须保证多个事务的交叉运行不影响这些事务的原子性;在第二种情况下,数据库管理系统必须保证被强行终止的事务对数据库和其他事务没有任何影响。

这些就是数据库管理系统中恢复机制和并发控制机制的责任。

事务的概念及其ACID特性相关推荐

  1. 数据库事务的概念和ACID特性!你懂了吗,小老弟?!

    数据库事务是什么 概念 1.数据库事务是指由一系列语句构成的逻辑单元,或者说是一系列数据库操作的集合.这些语句/操作要么全部提交,要么全部撤回,没有其他的中间状态. 2.事务的状态如图所示,注意它的最 ...

  2. MySQL事务原理分析(ACID特性、隔离级别、锁、MVCC、并发读异常、并发死锁以及如何避免死锁)

    MySQL事务原理分析(ACID特性.隔离级别.锁.MVCC.并发读异常.并发死锁以及如何避免死锁) 一.事务 目的 组成 特征 事务空间语句 二.ACID特性 原子性(A) 隔离性(I) 持久性(d ...

  3. 事务的ACID特性及概念

    事务的概念 所谓事务是用户自定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位.例如,在关系数据库中,一个事务可以是一条sql语句,一组sql语句或整个程序. 事务和程序 ...

  4. 【概念原理】四种SQL事务隔离级别和事务ACID特性

    2019独角兽企业重金招聘Python工程师标准>>> 事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性. 事务隔离级别 SQL事务隔离级别由弱到强分别是:READ_UN ...

  5. 数据库事务的ACID特性及含义

    数据库事务的ACID特性及含义 1.原子性(Atomic) 一个事务被视为一个不可分割的最小工作单元,这个事务里的所有操作要么全部成功执行,要么全都不执行,不能只执行其中的一部分操作.实现事务的原子性 ...

  6. 详述MySQL事务及ACID特性的实现原理

    " 事务是 MySQL 等关系型数据库区别于 NoSQL 的重要方面,是保证数据一致性的重要手段. 本文将首先介绍 MySQL 事务相关的基础概念,然后介绍事务的 ACID 特性,并分析其实 ...

  7. 谈谈MySQL InnoDB存储引擎事务的ACID特性

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 狼哥一直对数据库Mysql这块没有进行过系统的深入学习,今天看到一篇文章写的还不错,特意分享一下,我不能保证文章中所 ...

  8. ACID特性的实现原理与MySQL事务的关系

    深入学习MySQL事务:ACID特性的实现原理 事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID ...

  9. MySql:事务的ACID特性

    目录 一.事务概念 二.事务的ACID特性 一.事务概念 定义: 一个事务是由一条或者多条SQL语句所组成的一个不可分割的单元,只有事务中的所有操作都正常执行完,那么整个事务才能被提交到数据库.如果有 ...

最新文章

  1. 石头机器人拖地水量调节_石头扫地机器人T7上手体验:电控水箱和超大容量,扫拖一体全能型...
  2. 「 iOS 知识小集 」2018 · 第 23 期
  3. 在.Net 模板页中使用CSS样式
  4. python 使用标准库连接linux实现scp和执行命令
  5. 使用自动机的Lucene新的邻近查询
  6. mac php编译freetype,Mac下本机自带PHP缺少freetype最终解决方案
  7. mysql官网下载下来的免安装版怎么配置_Windows下的免安装版MySQL配置
  8. 只更新代码,然后发布版本:基于 Serverless Devs 原子化操作阿里云函数计算
  9. 关于重分类工具的其他讨论
  10. everything的安装后初始设置
  11. ORB-SLAM总结
  12. xmlspy_XMLSpy是免费的吗? 我说天堂的甘露。
  13. TextStudio,调用CJK包不产生中文,以及Cannot find font gbk49 in map file的解决方案
  14. 神经网络计算棒怎么用,英特尔神经计算棒拆解
  15. 机器学习中数据缺失值处理方法
  16. 英语四级考试在即,这几个超有用的App赶紧用起来,顺利考过四级
  17. python更改图片中物体的颜色_Python实现去除图片中指定颜色的像素功能示例
  18. 房源分页展示和实现webuploader上传图片
  19. 直播SVGA礼物特效文件如何压缩
  20. [Jpa save方法报错 ] : SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not ex

热门文章

  1. ( 百度Java面经)互联网公司校招Java面试题总结及答案——百度(目前只是部分总结)
  2. Monaco Editor教程(二):前端为什么一定要学习monaco-editor
  3. .net关键词中英文对照
  4. 2020.11.26课堂笔记(sparkGraphx算法之pregel)
  5. extjs 数字校园-云资源平台 2014.3.1-远程教育平台
  6. 从零开始搭建一个自己的前端脚手架(一):基础篇
  7. “双十一开发者节福利”淘系内部Java技术面分享,已入职天猫
  8. 上手实操分布式系统下的SSO单点登录
  9. 审计报告对企业的好处有哪些?什么是审计报告?
  10. 软件测试工程师未来如何规划自己的职业生涯~