3分钟了解数据库事务

事务是由几个读取和修改数据的sql命令组成的,但是知道commit命令被执行之后,修改操作才被认为是正常的完成。显式事务常以Begin tran语句开头,以commit tran或者rollback tran语句结尾的。

事务具有acid属性

  • 原子性(atomicity):原子性指的是每个事务要不提交(commit)要不终止(rollback)。比如现实中的转账

  • 一致性(consistency):一致性属性确保事务不允许系统到达一个不准确的逻辑状态-数据必须总是保持逻辑上的正确。及时在发生系统故障时,约束和规则也必须得到承兑。

  • 隔离性(isolation):隔离性会将并发事务与其他未完成事务的更新操作分离开。隔离性主要是解决并发事务出现的 脏读、不可重复读、幻读现象,根据自己的业务场景选择对应的隔离级别;

  • 持久性(durability):当事务提交以后,数据库的持久性属性就会确保事务的作用持续存在。

 事务总是全部支持这四种acid属性的。但是可能会初选一些另外的行为,常叫做‘一致性问题’。他们仅仅可能存在的行为,而用户对于隔离级别的选择决定下列这些行为哪种是被允许的。

Case1

事务A,先执行,处于未提交的状态

 640?wx_fmt=png

事务B,后执行

 640?wx_fmt=png

 如果事务B能够读取到(name为lisi)这条记录,事务A就对事务B产生了影响,这个影响叫做“读脏”,读到了未提交事务操作的记录。

Case2

事务A先执行

 640?wx_fmt=png

 

事务B,后执行,并且提交

640?wx_fmt=png

 

事务A,在此执行相同的查询,结果namezhaosi

 640?wx_fmt=png

这次是已提交事务B对事务A产生的影响,这个影响叫做“不可重复读”(重点为update),一个事务内相同的查询,得到了不同的结果。

 Case3

事务A,先执行,1条结果:

 640?wx_fmt=png

事务B,后执行,并且提交;

 640?wx_fmt=png

事务A,在此查询为两条,莫名其妙多出了一条

 640?wx_fmt=png

这次是已提交事务B对事务A产生的影响,这个影响叫做幻读”。重点在insert,delete

为了解决多个事务并发会引发的问题,进行并发控制。数据库提供了四种事务隔离级别供用户选择。

  • Read Uncommitted 读未提交

  • Read Committed 读已提交

  • Repeatable Read 可重复读

  • Serializable 串行化

 640?wx_fmt=png

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

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

相关文章

WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择

NETCore提供了三种不同类型用于生产的REST API: HttpWebRequest;WebClient;HttpClient,开源社区创建了另一个名为RestSharp的库。如此多的http库,该怎样选择呢?01HttpWebRequest这是.NET创建者最初开发用于使用HTTP请求的标准类。…

.NetCore 2.1以后的HttpClient最佳实践

ASP.NET Core 2.1中出现一个新的HttpClientFactory功能,它有助于解决开发人员在使用HttpClient实例从其应用程序发出外部Web请求时可能遇到的一些常见问题。01介绍在.NETCore平台的2.1新增了HttpClientFactory,虽然HttpClient这个类实现了disposable&…

点分治(简要讲解 + 模板)

树上点分治 思想 两个点之间的距离无非就是两种关系:我们约定dis[i]dis[i]dis[i]表示这个点到当前根节点的距离 dis[u]dis[v]dis[u] dis[v]dis[u]dis[v],在同一个根节点的不同子树上。dis[u]dis[v]dis[u] dis[v]dis[u]dis[v],在同一个棵子…

在 alpine 中使用 NPOI

在 alpine 中使用 NPOIIntro在 .net 中常使用 NPOI 来做 Excel 的导入导出,NPOI 从 2.4.0 版本开始支持 .netstandard2.0,在 dotnet core 应用也可以用 DotNetCore.NPOI。对于 .NET Core 应用来说,如果没有特殊的需求,alpine 是最…

Educational Codeforces Round 16 C. Magic Odd Square 矩阵构造

传送门 文章目录题意:思路:题意: 给你一个奇数nnn,让你构造一个n∗nn*nn∗n的矩阵,矩阵的每个位置依次填上[1,n∗n]之内的数[1,n*n]之内的数[1,n∗n]之内的数,满足每行、每列、以及主对角线的和都是奇数。…

关于WCF、WebAPI、WebService之间的区别总结 分布式通信技术

早在1996年Gartner就前瞻性地提出了面向服务架构的思想(SOA),SOA 的走红在很大程度上归功于 Web Service 标准的成熟和应用的普及。Service Oriented Ambiguity 中文一般理解为:面向服务架构,简称SOA,这个概念算得上微服务的鼻祖了…

.NET中的值类型与引用类型

.NET中的值类型与引用类型这是一个常见面试题,值类型(Value Type)和引用类型(Reference Type)有什么区别?他们性能方面有什么区别?TL;DR(先看结论)值类型引用类型创建位置栈托管堆赋值时复制值复制引用动态内存分配无需…

跨语言调用Hangfire定时作业服务

背景Hangfire允许您以非常简单但可靠的方式执行后台定时任务的工作。内置对任务的可视化操作。非常方便。但令人遗憾的是普遍都是业务代码和hagnfire服务本身聚合在一个程序中运行,极大的限制了hangfire的扩展和跨语言调用。所以萌生了开发一个支持restful api调用的…

可落地微服务on k8s的持续集成/部署方案

我们隔一流的软件生产工艺还有多远?在距离15000公里外,Amazon一年可以进行5000万次部署,在这一边某电商平台的研发部门里,让他们引以为傲的是他们正在进行“敏捷”开发模式,并对外号称他们是以每周为迭代来进行升级。时…

Codeforces Round #579 (Div. 3) F1. Complete the Projects (easy version) 排序 + 贪心

传送门 文章目录题意:思路:题意: 思路: 比较直观的想法就是对于bi≥0b_i\ge0bi​≥0的项目,我们将aia_iai​从小到大排序,让后依次加bib_ibi​,如果有取不到的,显然就无解。否则再看…

历久弥新 - 微软万亿市值背后的文化支撑(下)|DevOps案例研究

内容来源:DevOps案例深度研究-Microsoft文化支撑研究战队(本文只展示部分PPT研究成果,更多细节请关注案例分享会,及本公众号。)本案例内容贡献者:陈飞(Topic Leader)、陈雨卿、郭子奇…

架构杂谈《九》

微服务与轻量级通信机制微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间胡亮协调、互相配合,为用户提供最终价值。在微服务架构中,服务与服务之间通信时,通常是通过轻量级的通信机制&#…

Codeforces Round #585 (Div. 2) E. Marbles 状压dp + 逆序对

传送门 文章目录题意:思路:题意: 思路: 考虑数列最终的状态一定是相同颜色在一起,所以我们发现他的颜色是有顺序的!显然可以用状压dpdpdp来枚举颜色的顺序,但是又有问题了,你怎么确…

GitLab CI 自动部署netcore web api 到Docker

前端篇文章中,我们已经成功的将asp.net core webapi在Docker容器中运行,并且部署了一套自己的GitLab环境。.Net & Docker(二)5分钟快速用Docker部署你自己的GitLab.Net & Docker(一)在Docker容器上…

.net core 实现基于 cron 表达式的任务调度

.net core 实现基于 cron 表达式的任务调度Intro上次我们实现了一个简单的基于 Timer 的定时任务,详细信息可以看这篇文章 。但是使用过程中慢慢发现这种方式可能并不太合适,有些任务可能只希望在某个时间段内执行,只使用 timer 就显得不是那…

ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core

前言原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP. NE Core Identity又不想使用EntityFramework Core。真难伺候&…

什么是微服务?为什么你要用微服务?

前言最近几年微服务很火,大家都在建设微服务,仿佛不谈点微服务相关的技术,都显得不是那么主流了。近几年见识到身边朋友的很多公司和团队都在尝试进行微服务的改变,但很多团队并没有实际微服务踩坑经验,很多团队甚至强…

P5367 【模板】康托展开

传送门 文章目录题意:思路:题意: 思路: 存个板子 // Problem: P5367 【模板】康托展开 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P5367 // Memory Limit: 64 MB // Time Limit: 1200 ms // // Powered by …

微软开源基于.NET Core的量子开发工具包 QDK

微软最近开源了量子开发工具包(Quantum Development Kit,QDK),旨在使“量子计算和算法开发对开发人员来说更容易、更透明”。微软 QDK 包括 Q#编译器、量子库和量子模拟器。微软在 2017 年底的 Ignite 大会上发布了量子开发工具包…

UVA11525 Permutation 逆康托展开

传送门 文章目录题意:思路:题意: 思路: 逆康托展开板子 // Problem: UVA11525 Permutation // Contest: Luogu // URL: https://www.luogu.com.cn/problem/UVA11525 // Memory Limit: 0 MB // Time Limit: 3000 ms // // Power…