什么是事务,为什么会有事务,事务是做什么的?

看到这个标题工作这么久,从来没有认真的思考过这个问题,今天参考一些资料做一些总结。

1、什么是事务

(1) 事务的定义

事务就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部执行,要么全部不执行,是不可分割的工作单元。

(2)事务的使用:

begin transaction commit/rollback.

begin transaction 表示事务的开启标记,

commit 表示事务的提交操作,表示该事务的结束,此时将事务中处理的数据刷到磁盘中物理数据库磁盘中去。

rollback:表示事务的回滚操作,表示事务异常结束,此时将事务中已经执行的操作撤销回原来的状态。

2、事务的产生

数据库中的数据是共享资源,因此数据库系统通常要支持多个用户的或不同应用程序的访问,并且各个访问进程都是独立执行的,这样就有可能出现并发存取数据的现象,这里有点类似Java开发中的多线程安全问题(解决共享变量安全存取问题),如果不采取一定措施会出现数据异常的情况。

DBMS系统必须对这种并发操作提供一种相应的处理机制来保证,访问彼此之间不受任何干扰,从而保证数据库的正确性不受到破坏,为了避免数据库的不一致性,这种处理机制称之为“并发控制”,其中事务就是为了保证数据的一致性而产生的一种概念和手段(事务不是唯一手段)

3、事务的特征

为了保证数据库的正确性与一致性事务具有四个特征:

(1) 原子性(Atomicity)

事务的原子性保证事务中包含的一组更新操作是原子的,不可分割的,不可分割是事务最小的工作单位,所包含的操作被视为一个整体,执行过程中遵循“要么全部执行,要不都不执行”,不存在一半执行,一半未执行的情况。

(2)一致性(Consistency)

事务的一致性要求事务必须满足数据库的完整性约束,且事务执行完毕后会将数据库由一个一致性的状态变为另一个一致性的状态。事务的一致性与原子性是密不可分的,如银行转账的例子 A账户向B账户转1000元钱,首先A账户减去1000元钱,然后B账户增加1000元钱,这两动作是一个整体,失去任何一个操作数据的一致性状态都会遭到破坏,所以这两个动作是一个整体,要么全部操作,要么都不执行,可见事务的一致性与原子性息息相关。

(3)隔离性(Isolation)

事务的隔离性要求事务之间是彼此独立的,隔离的。及一个事务的执行不可以被其他事务干扰。具体到操作是指一个事务的操作必须在一个事务commit之后才可以进行操作。多事务并发执行时,相当于将并发事务变成串行事务,顺序执行,如同串行调度般的执行事务。这里可以思考事务如何保证它的可串行化的呢?答案锁,接下来会讲到。

(4)持续性(Durability)

事物的持续性也称持久性,是指一个事务一旦提交,它对数据库的改变将是永久性的,因为数据刷进了物理磁盘了,其他操作将不会对它产生任何影响。

在此事务的处理思想是与多线程安全的处理思想是类似的,面临问题是一致的都是解决资源共享安全问题,解决问题的思想也是进行串行化调度。那么由并发引起问题到底有哪些呢?

事务(一)——什么是事务,为什么会有事务,事务是做什么的?相关推荐

  1. springboot 事务手动回滚_来,讲讲Spring事务有哪些坑?

    来自公众号:孤独烟 引言 今天,我们接上文<面试官:谈谈你对mysql事务的认识>的内容,来讲spring中和事务有关的考题! 因为事务这块,面试的出现几率很高.而大家工作中CRUD的比较 ...

  2. 多个mapper的事务回滚_揭秘蚂蚁金服分布式事务 Seata 的AT、Saga和TCC模式

    作者| 屹远(陈龙),蚂蚁金服分布式事务核心研发 . 导语 本文根据 8月11日 SOFA Meetup#3 广州站 <分布式事务 Seata 及其三种模式详解>主题分享整理,着重分享分布 ...

  3. java 封装事务_Spring之路(36)–事务很重要吗?Spring为何要封装事务?Spring事务有陷阱吗?...

    可以不使用事务吗 真的遇到过开发企业应用,但是不知道啥是事务的朋友. 好吧,我始终认为抛开性能.界面.易用性等方面不说,正确性应该是一个项目最基础的要求了. 所以,凡是企业应用,正儿八经有客户的系统, ...

  4. springboot事务回滚源码_Spring Boot中的事务是如何实现的

    1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...

  5. STM 软件事务内存——本质是为提高并发,通过事务来管理内存的读写访问以避免锁的使用...

    对Java程序员来说,我们对面向对象的编程(OOP)自然都是烂熟于胸的,但语言也极大地影响了我们构建面向对象应用程序的方式.(现在的OOP已经和Alan Kay当初创造这个词时候的初衷大不相同了,他的 ...

  6. 怎么实现事务_你可能知道事务的四大特性,但是不一定知道“事务的实现原理”...

    说到数据库,那就一定会聊到事务,事务也是面试中常问的问题,我们先来一个面试场景: 面试官:"事务的四大特性是什么?"我:"ACID,即原子性(Atomicity).隔离性 ...

  7. [数据库事务与锁]详解一: 彻底理解数据库事务

    注明: 本文转载自http://www.hollischuang.com/archives/898 事务 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数 ...

  8. Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现

    前言 本专题大纲如下: 事务专题大纲 「对于专题大纲我又做了调整哈,主要是希望专题的内容能够更丰富,更加详细」,本来是想在源码分析的文章中附带讲一讲事务使用中的问题,这两天想了想还是单独写一篇并作为事 ...

  9. 多数据源 事务管理_可能是最漂亮的Spring事务管理详解

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...

  10. Redis事务,ACID性质,但是Redis不支持事务回滚

    ACID性质 1.原子性 事物具有原子性指的是,数据库将事务中的多个操作当做一个整体来执行,服务器要么执行事务中的所有操作,要么就一个操作也不执行. 对于Redis的事务功能来说,事务队列中的命令要么 ...

最新文章

  1. NYOJ 30 Gone Fishing JAVA+解析
  2. Spring 第二遍 02 spring IOC应用
  3. NASM中SECTION的概念
  4. 95. Unique Binary Search Trees II 不同的二叉搜索树 II
  5. Eureka-eureka原理分析
  6. UIMenuController在label中的使用
  7. 工作效率 工具_我使用的工具加快了我的工作流程,使我的工作效率更高
  8. Qt error: collect2: error: ld returned 1 exit status
  9. 在Eclipse中使用Gradle开发web3j以太坊应用
  10. Java中继承方法的使用,以及使用方法的注意事项,继承方法重写的理解,白话文详解,简单易理解
  11. 改善程序与设计的55个具体做法 day5
  12. Dz插件-Discuz插件-免费Discuz采集伪原创发布插件
  13. DIY智能战车制作教程,开启你的造车之旅
  14. C语言输出大写金额,编程实现,输入一个人民币小写金额值,转化为大写金额值输出。先实现基本功能...
  15. 手机裁剪圆角图片_Photoshop裁剪圆角图片方法
  16. 推荐一个Github上很酷的开源项目——The Octo-Bouncer
  17. 阿啊-有意思的表情包
  18. tsp java_蚁群算法java实现以及TSP问题蚁群算法求解
  19. Appium的一点一滴
  20. 【Google Chrome浏览器离线安装包下载方法】

热门文章

  1. css媒体查询适配iphoneX,iPhone5,HUAWEI P40,ipad
  2. 嵌入式系统中启动Hostapd
  3. 【函数】一篇文章带你看懂控制流、递归、高阶函数
  4. jQuery笔记综合
  5. 一建考增项,你应该怎么选?
  6. 非结构化用户标签︱如何花式解析一条收货地址(一)
  7. 什么是TestNG?
  8. 为什么引入ReLU激活函数
  9. canvas跨域:Tainted canvases may not be exported.
  10. 使用elementui美化原生input file