事务基本信息

一、事务的定义

  事务(Transaction)是由一系列对系统数据进行访问与更新的操作所组成的一个程序执行逻辑单元(Unit),侠义上的事务特质数据库事务。1)当多个应用程序并发访问数据库时,事务可以在这些应用之间提供一个隔离方法,以防止彼此的操作互相干扰。2)事务为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持数据一致性的方法。

二、事务的四个特征(ACID)

  分别是原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability),简称ACID特性。

1)原子性

  事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,只允许出现两种状态之一:①全部成功执行。②全部不执行。

  任何一项操作失败都将导致整个事务失败,同时其它已经被执行的操作都将被撤销并回滚,只有所有的操作全部成功,整个事务才算是成功完成。

2)一致性

  事务的一致性是指事务的执行不能破环数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。如果数据库系统在运行过程中发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说不一致的状态。

3)隔离性

  事务的隔离性是指在并发环境中,并发的事务是相互隔离的,一个事务的执行不能被其它事务干扰。也就是说,不同的事务并发操纵相同的数据时,每个事务都有各自完整的数据空间,即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

标准AQL规范中定义的4个事务隔离级别,不同的隔离级别对事务的处理不同

①未授权读取,也被称为读未提交,该隔离级别允许脏读取,其隔离级别最低。事务B可以看到事务A操作过程中的数据变化。

②授权读取,也被成为读已提交,只允许读取已经被提交的数据。

③可重复读取(Repeatable Read),就是保证在事务处理过程中,多次读取同一个数据时,其值都和事务开始时刻是一致的。

④串行化(Serializable)是最严格的事务隔离级别。要求所有事务都被串行化 执行

4)持久性

  事务的持久性是指一个事务一旦提交,它对数据库中对应数据的状态变更就应该是永久的。

幻读(幻影数据):指同样的事务操作,在前后两个时间段内执行对同一个数据项的读取,可能出现不一致的结果。

  事务隔离级别越高,就越能保证数据的完整性和一致性,但同时对并发性能的影响也就越大。通常,对于绝大多数的应用程序来说,可以优先考虑将数据库系统的隔离级别设置为授权读取,这能够在避免脏读的同时保证较好的并发性能。尽管这种事务隔离级别会导致不可重复读、虚读等并发问题,但较为科学的做法是在可能出现这类问题的个别场合中,有应用程序主动采用悲观锁或乐观锁来进行事务控制。

转载于:https://www.cnblogs.com/TheoryDance/p/7499681.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 人脸识别_小模型,高精度!小视科技推出极致轻量型人脸识别SDK

AI 落地为王时代的到来,使得人脸识别的精度和速度备受人们关注。近年来,随着模型压缩、量化技术的进步,模型运行速度也越来越快。对于一些特定的人脸检测任务,轻量型的人脸识别SDK即可满足需求。▲图源网络轻量级架构的显著特征便…

机器视觉基础知识详解

来源:工业机器人随着工业4.0时代的到来,机器视觉在智能制造业领域的作用越来越重要,为了能让更多用户获取机器视觉的相关基础知识,包括机器视觉技术是如何工作的、它为什么是实现流程自动化和质量改进的正确选择等。小编为你准备了…

DOM编程练习(慕课网题目)

编程练习 制作一个表格,显示班级的学生信息。 要求: 1. 鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff 2. 点击添加按钮,能动态在最后添加一行 3. 点击删除按钮,则删除当前行 我的解答…

截屏没有了_华为手机居然有6种截屏花招,很多人不知道,你会用哪几种?

华为手机越来越受国民的欢迎,而且华为手机的功能挺多挺实用的。就比如:支持画“一”进行分屏操作,可以让我们一边追剧一边聊天,真的特别方便。我使用华为手机也已经有三个年头了,在日常生活中看到一些有用的内容&#…

科技巨头纷纷从刷脸转向“刷手”,指纹如何扛起生物识别大旗?

来源:CSDN日前,IBM 高调宣布不再提供任何人脸识别服务和人脸分析软件及不再继续研发相关技术,正式退出市场。紧随其后,亚马逊也宣布,将暂停警方使用其人脸识别技术一年,转向扫描手掌特征来识别用户身份。人…

洛谷 P1767 家族_NOI导刊2010普及(10)

P1767 家族_NOI导刊2010普及(10) 题目描述 在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝&…

matlab设置图片背景透明_[转载]Matlab中得到透明背景图片的方法

MATLAB输出的矢量图往往不是透明背景的,这样插在其他文件中就会很难看。关于在MATLAB中如何得到透明背景的矢量图,我有个经验就是:用MATLAB导出pdf图形(而不是eps图形),然后用Acrobat另存成eps图形,往往就是透明的了。…

宜春万申智能装备携粉体自动化产线解决方案盛装亮相2024济南生物发酵展

宜春万申智能装备股份有限公司受邀盛装亮相2024第12届济南国际生物发酵展 展位号:1号馆A16-2展位 2024第12届国际生物发酵产品与技术装备展览会(济南)于3月5-7日在山东国际会展中心盛大召开,全方面展示:生物发酵、生…

浙大绘制首个地球微生物“社会关系”网络

来源:浙江大学图片由课题组提供单个微生物看不见、摸不着,但却无时不在、无处不在。但微生物的功能绝非“分解者”这么简单,影响到温室气体的、绿色生产的、人体健康的方方面面,其群落组成和功能具有极高的复杂性。如何更好认识微…

原型链相关

1.创建对象有几种方法 // 第一种var object1 { name:fang};var object2 new Object({name: fang});console.log(object1, object2);  //Object {name: "fang"} Object {name: "fang"}// 第二种var M function(name){this.name name};var object3 ne…

甘特图制作_如何用Excel快速制作甘特图?(超详细!)

甘特图作为现代项目管理中一项重要的管理工具,它能够帮助你考虑资源、成本等项目中重要的元素,并且能够通过图形直观的观察到项目中所要完成的任务、开始与结束时间,每项任务所需时间,某项任务在某个时间段内完成等都能直观的呈现…

后MATLAB时代的七种开源替代,一种堪称完美!

来源:中国指挥与控制学会近日,有哈工大学生表示收到了正版软件取消激活的通知,而在与 MATLAB 开发公司 MathWorks 交涉之后,被告知由于美国政府实体名单的原因,相关授权已被中止。目前,哈尔滨工业大学、哈尔…

训练深度学习_深度学习训练tricks整理1

深度学习训练tricks整理1环境:pytorch1.4.0 Ubuntu16.04参考:数据增强策略(一)​mp.weixin.qq.comhttps://zhuanlan.zhihu.com/p/104992391​zhuanlan.zhihu.com深度神经网络模型训练中的 tricks(原理与代码汇总&…

三个可能会被计算机视觉技术改变的行业

计算机视觉最主要的应用是面部识别,这种技术经常被用于安全和执法领域。但是,本文意在介绍一些计算机视觉技术不太明显的用途。来源丨Forbes作者丨Bernard Marr编译丨科技行者计算机视觉技术(也被称为机器视觉)允许机器以视觉方式…

查看本机的ip地址

ifconfig可以查看本机的ip地址:inet addr:10.108.104.185 转载于:https://www.cnblogs.com/ymjyqsx/p/7520070.html

java stream 多个filter_如何在Java Stream上应用多个过滤器?

我必须通过一个映射过滤一个对象集合,该映射包含对象字段名称和字段值的键值对。我试图通过stream()。filter()应用所有过滤器。对象实际上是JSON,因此Map保留了其变量的名称以及它们必须包含的值才能被接受,但是出于简单性的原因&#xff0c…

没有数学何来计算机:论计算机起源的数学思想

来源:无数学 无计算机人类的历史可以看做一部关于解放的历史。也有这样的说法,懒惰是人类进步的动力。为了偷懒,人类不断的做着各种努力,发明了各种机器工具,将自己从繁重的劳动解放出来,另一方面&#xf…

python和python stub文件类型的区别_python – 如何告诉mypy包含stubfile

我正在玩mypy(版本:0.630),我很难让它看到我的存根文件.谁能告诉我这里有什么问题:我的目录结构如下所示:├── caesar.py└── stubs└── caesar.pyicaesar.py包含一些有效的python代码. caesar.pyi包含单词bugger.我希望当我运行mypy时…

复杂控件

1.自定义标题栏 1.1引入布局 步骤: 1)写好布局 2)在activity布局里面直接引用该布局 核心代码: 注意:如何将系统自带的标题栏去掉: 方法一:(不一定灵) 方法二&#xff1a…

​Arm芯片的新革命在缓缓上演

来源:内容由半导体行业观察(ID:icbank)编译自「seekingalpha」,谢谢。因为苹果将发布使用其自研Arm芯片的Mac电脑,为此我认为基于ARM的芯片将蚕食 Intel和AMD的核心业务。这其实已经发生了,但是…