Transaction事务类似一种集合,代表着一系列的数据库操作,其结果会使数据库变为一个整体,因此不可分割。

事务状态:活跃状态、部分提交状态、失败状态、中止状态、提交状态

事务的四大特性(ACID):

原子性(Atomicity):事务要么全部执行,要么全部失败;不会存在一个事务的部分内容完成的现象。

一致性(consistency):事务的起始和结束,数据应当是不变的。

隔离性(Isolation):一个事务的执行不受外界其他事务

持久性(Duration):一个事务提交之后,对数据库的改变是永久的。

ACID特性是由relational database来实现的,其中DBMS采用日志log来保证原子性、一致性、持久性。log记录了事务对数据库所做的更新,如果运行过程中产生错误可以根据log撤销已经做的更新,rollback到开始之前的状态。

DBMS使用锁lock机制来实现隔离性,在并发场景下,只有获得锁的事务才可以更新该数据,其他事务要等待到获得锁才可以更新。

四种事务相互影响:

脏读:事务A读到了事务B未提交的数据。

不可重复读:一个事务范围内,两次查询返回了不同的数据,原因是在两次查询的间隔,其他事务对数据进行了修改。

幻读:事务A正在向表中插入数据,而事务B对表中全部数据行进行了修改。这时事务A会发现还有未修改的数据。

丢失更新:

两个事务同时对一条数据做修改,导致B的修改覆盖了A。

事务的隔离级别:

读取未提交:最低级别隔离,会产生各种事务问题

读取已提交:事务提交后,结果才可以被其他事务看见,可以解决脏读问题。

可重复读:同一个事务中,对同一份数据的读取结果总是相同的,无论是否其他事务对其进行操作,可以避免不可重复读和丢失更新

可串行化:事务串行化,隔离级别最高,完全服从ACID,牺牲了系统的并发性,所有事务依次执行,解决了并发事务的问题。

Transaction相关推荐

  1. java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction. in /U

    错误内容如下 java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction ...

  2. redis 在 php 中的应用(事务 [ Transaction ] 篇)

    本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: Transaction(事务) WATCH UNWATCH ...

  3. Oracle Block浅析2:ITL(Interested Transaction List)

    一.ITL(Interested Transaction List): ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,位于数据块头(block ...

  4. Fragment提交transaction导致state loss异常

    下面自从Honeycomb发布后,下面栈跟踪信息和异常信息已经困扰了StackOverFlow很久了. java.lang.IllegalStateException: Can not perform ...

  5. sql server 2005 T-SQL BEGIN TRANSACTION (Transact-SQL)

    标记一个显式本地事务的起始点.BEGIN TRANSACTION 使 @@TRANCOUNT 按 1 递增. Transact-SQL 语法约定 语法 BEGIN { TRAN | TRANSACTI ...

  6. mysql中transaction的实现

    transaction在数据库编程中是一个重要的概念,这样做可以控制对数据库操作的事务提交. 但是要想在程序中实现事务,要求数据库本身支持事务. 现在的关系型数据库,我们日常使用的mysql,orac ...

  7. ACID+CAP+BASE+Transaction(事务)

    ACID+CAP+BASE+Transaction(事务) 数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity).一致性(Consis ...

  8. CRM User Status profile中Business Transaction字段的用途

    有朋友问到User Status profile中Business Transaction字段的用途,如下图INPR, FINI所示. 实际上,这个字段作为一个桥梁,连接了User Status和Sy ...

  9. SAP QM 执行事务代码QS51维护使用决策的选择集,系统报错 – Transaction no longer valid for catalog ‘3’ -

    SAP QM 执行事务代码QS51维护使用决策的选择集,系统报错 – Transaction no longer valid for catalog '3' - 执行事务代码QS51,试图为工厂NMD ...

  10. We cannot activate inspection type for article master in transaction code MM41?

    We cannot activate inspection type for article master in transaction code MM41? Is it possible to pl ...

最新文章

  1. Docker 容器技术 — docker run
  2. MYSQL-使用mysqldump创建数据库快照
  3. 【Ubuntu】ubuntu更新设置
  4. Activity跳转的数据交换问题---Activity学习笔记(二)
  5. mysql数据库备份shell_mysql数据库备份shell脚本分享
  6. git 提交文件_git原理与实战
  7. 关键时刻卡成狗,测网速要成上网必备动作了?
  8. php 微信公众 验证失败,微信公众平台token验证失败
  9. 张孝祥JavaScript视频教程flash版
  10. WPS简历模板的图标怎么修改_新媒体运营-简历模板范文,【工作经历+项目经验+自我评价】怎么写?...
  11. php表格行数怎么设置,表格怎么排版
  12. 计算机信息与科学专业好吗,俄亥俄州立大学 计算机信息与科学这个专业怎么样...
  13. Keras,今天7岁啦
  14. 51nod3241 小明和他的同学们
  15. Soul App聚焦Z世代社交需求 凭借2021亮眼表现荣获多个奖项
  16. Shell脚本学习指南(七)——产生脚本
  17. app访问服务器共享文件夹,管理企业共享文件软件的选择
  18. 使用CNN神经网络进行图片识别分类
  19. python库怎么绘画_Python绘图Turtle库详解
  20. 投票法的原理和案例分析

热门文章

  1. android启用hdcp_如何在Android的Google键盘中启用单手模式
  2. java水彩画效果滤镜,教你巧用PS滤镜实现水彩画效果
  3. python正则表达式中的冒号_正则表达式,正则匹配冒号
  4. git基本命令、提交pr
  5. KEILC51的下载和安装与工程建立
  6. Mac如何添加打印机
  7. flash player所有版本下载地址
  8. IDCC2018|上海数据港股份有限公司副总裁、数据中心首席架构师王海峰:标杆管理驱动数据中心建设变革...
  9. 采购供应链管理系统:企业采购与供应链管理更简单、快捷
  10. 华为mate xs拍照怎么用?镜像智拍助你告别大饼脸