MYSQL--事务隔离

你在银行存了100元,现在你要把100元转给用户A,银行一查你还有钱,开始给A转钱,这时,转钱给A的操作还未完成,你又把钱转给B,银行一看,你银行账号还有钱,就又给B转钱。那乱套了....银行血亏

所以把你转给A,转给B这两件事分为两个事务。

事务可以保证在事务中所有的数据库操作要么全部成功,要么全部失败。

事务的特性,即ACID(原子性,一致性,隔离性,持久性),这篇文章就来聊一聊隔离性。

多个事务同时执行时,可能出现脏读,不可重复读,幻读,为了解决这些问题,出现了“隔离级别”

SQL标准的隔离级别分为:读未提交,读提交,可重复读,串行化

读未提交:别人未提交,我也能看到

读提交:别人提交了,我才能看到

可重复读:别人提交了,我也不看

串行化:我没改完,谁也看不见

在实现上,数据库里面会创建一个视图,访问时以视图的逻辑结果为准。

在“可重复读”隔离级别下,视图在事务创建时建立,整个事务存在期间都用这个视图。

在“读提交”隔离级别下,视图是在每个SQL语句开始执行的时候开始创建的。

“读未提交”隔离级别下,直接返回记录上的最新值。

“串行化”隔离级别下,直接用加锁的方式来避免并行访问。

可重复读的场景适用于哪些范围?

比如你有一个账户余额表,一个账单明细,你在对比看是否与本月账单一致时一定不希望有新的交易发生影响你,这个时候用“可重复读”,可以默认事务是静态的

事务隔离 的实现:

在MYSQL中,每条记录在更新的时候都会同时记录一条回滚操作。通过回滚操作,可以得到前一个状态的值。

比如1+1,变为2,继续2+1变为3,再3+1变为4

从4开始回滚,可以得到1,2,4几个值,同一条记录在系统中存在多个版本,这就是多版本并发控制(MVCC)

回滚日志也不能一直保留,什么时候删除呢?

系统会判断,当没有事务需要用到这些回滚日志时,回滚日志才删除。

什么时候不需要呢?

当系统里没有比这个回滚日志更早的read-view的时候。

回滚段可能非常耗费资源,所以尽可能避免使用长事务

长事务:长时间未提交的事务

事务的启动方式:

1.显示启动事务语句,begin或者start transaction,配套的提交语句是commit,回滚语句是rollback

2. set autocommit=0,这个命令将自动提交关闭。意味着执行SQL语句,事务启动,不会自动提交。这个事务持续到你主动执行

commit或者rollback语句,或者断开连接。

有的框架建立连接后,会默认执行 set autocommit=0,就导致了接下来的操作数据库都在事务中,如果是长连接,就导致了长事务。

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

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

相关文章

数据库原理

一、事务 概念ACIDAUTOCOMMIT二、并发一致性问题 丢失修改读脏数据不可重复读幻影读三、封锁 封锁粒度封锁类型封锁协议MySQL 隐式与显示锁定四、隔离级别 未提交读(READ UNCOMMITTED)提交读(READ COMMITTED)可重复读(…

Nature封面:人类还在看提词器,AI的辩论能力却出现了重大进展

来源:机器之心编辑:魔王、陈萍人类斗嘴还要看提词器,AI 引经据典的能力却已经比你高出不止一个段位了。在人工智能打败专业国际象棋选手、围棋选手,并在多个电子游戏中大展身手之后,现在它冲着职业辩论选手来了&#x…

MYSQL--浅析索引

索引是为了提高数据查询的效率,类似于书的目录。 索引的常见模型有三种: 1.哈希表: 只适用于等值查询,不适用于范围查询 为什么呢? 哈希表是(key,value)的格式存储,…

HDU Integer's Power(容斥原理)

题意 求[l,r]的最大指数和&#xff08;1<l,r<10^18&#xff09; 最大指数和&#xff08;如648^24^32^6,所以64的最大指数和是6&#xff09; 题解 很明显我们可以先求出[1,n]的最大指数和&#xff0c;然后再作差。 我们可以先求出num[i]代表[1,n]中最大指数为i的数有多少个…

人工智能姿态逐渐“亲民”,2021年AI五大趋势备受期待

来源&#xff1a;齐鲁壹点人工智能(AI)已成为多国科技发展领域的“香饽饽”&#xff0c;各国政府以及多家大企业也都不甘示弱&#xff0c;争相砸重金支持该领域的发展&#xff0c;各种创新因此如雨后春笋般喷薄而出。此外&#xff0c;新冠肺炎疫情的肆虐迫使我们进一步加大对于…

MYSQL--三种锁

数据库锁设计的初衷是处理并发问题。作为多用户共享的资源&#xff0c;当出现并发访问的时候&#xff0c;数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围&#xff0c;MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。…

网络请求过程示例

1.域名解析&#xff1a;在客户端&#xff08;浏览器&#xff09;输入http://www.baidu.com&#xff0c;通过DNS解析到该域名对应的IP地址为220.181.27.48 2.数据包通过链路层发送到路由器&#xff0c;通过邻居协议(ARP协议)查找给定IP地址的MAC地址 3.TCP三次握手建立端到端的连…

行业观察 | 全球IoT云平台第一股诞生,IoT离爆发还有多远?

来源&#xff1a; 财经杂志文 &#xff1a;施然2021年3月18日&#xff0c;IoT云平台公司Tuya&#xff08;涂鸦智能&#xff09;上市&#xff0c;这也是目前全球范围内IoT云平台第一股。Tuya的云敲钟仪式在杭州举办&#xff0c;共同参与云敲钟仪式的&#xff0c;除了Tuya的高管团…

Leetcode--23.合并K个排序链表(Java)

合并 k 个排序链表&#xff0c;返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 思路&#xff1a;分治法 多个链表&#xff0c;两两合并&#xff0c;第…

SQL2012 之 创建备份计划

打开数据库&#xff0c;选择 管理 → 右键维护计划→选择新建维护计划&#xff0c;填写计划名称&#xff0c;如下图&#xff1a; 修改维护计划参数&#xff0c;如下图&#xff1a; 工具箱->备份数据库任务&#xff0c;拖到计划里&#xff0c;如下图&#xff1a; 编辑“备份数…

薛其坤院士对话马斯克:下一个颠覆性创新是什么?

来源&#xff1a;网易科技报道文&#xff1a;丁广胜他来了&#xff0c;他又来了&#xff0c;马斯克这次在家中远程视频参会中国发展高层论坛。这次很遗憾&#xff0c;马斯克不能现场展示“动感舞蹈”了。他谈到了自动驾驶&#xff0c;也谈到了星际探索。薛其坤院士谈到了太阳能…

redis的底层数据结构

redis:一个key-value系统 Redis 与其他 key - value 缓存产品相比有以下三个特点&#xff1a; Redis支持数据的持久化&#xff0c;可以将内存中的数据保存在磁盘中&#xff0c;重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据&#xff0c;同时还提…

「九章」量子计算优越性遭北大院士质疑,潘建伟陆朝阳长文回应

来源&#xff1a; 雷锋网作者&#xff1a;付静对量子计算和玻色取样的专业概念的理解存在偏差&#xff0c;或是「九章」受质疑的原因。2020 年 12 月 4 日&#xff0c;我国成功达到量子计算研究第一个里程碑量子计算优越性&#xff08;Quantum Computational Advantage&#xf…

Leetcode--542. 01 矩阵(java)

给定一个由 0 和 1 组成的矩阵&#xff0c;找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0 示例 2: 输入: 0 0 0 0 1 0 1 1 1 输出: 0 0 0 0 1 0 1 2 1 注意: 给定矩阵的元素个数不超过 10000。…

OpenAI又放大招:连接文本与图像的CLIP,在ImageNet上效果媲美ResNet50

来源&#xff1a;AI科技评论公众号编译&#xff1a;蒋宝尚、陈彩娴2020年&#xff0c;通用模型产生了经济价值&#xff0c;特别是GPT-3&#xff0c;它的出现证明了大型语言模型具有惊人的语言能力&#xff0c;并且在执行其他任务方面也毫不逊色。2021年&#xff0c;OpenAI 联合…

[COCI2017-2018#1] Plahte

题面很长&#xff0c;可往往真正有用的题意却没有这么长&#xff0c;例如说这么一句&#xff1a; 床单放在上面&#xff0c;使它们之间角或边不会互相接触&#xff0c; 边也不会相交&#xff0c;但他可能把较小的床单放在大的上面&#xff0c;或者一个完全覆盖另个。 从这句话中…

Leetcode-437. 路径总和 III(Java)

给定一个二叉树&#xff0c;它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点到子节点&#xff09;。 二叉树不超过1000个节…

美国国家创新体系的演化历程、特点及启示

本文来源&#xff1a;微信公众号科情智库原载于《全球科技经济瞭望》2020年12月第35卷第12期作者&#xff1a;李哲、杨晶、朱丽楠&#xff0c;中国科学技术发展战略研究院国家创新体系反映经济活动中科学技术知识生产和配置的整体状况&#xff0c;其着眼点是激励知识生产、提高…

牛客网--字符串合并处理(Java)

按照指定规则对输入的字符串进行处理。 详细描述&#xff1a; 将输入的两个字符串合并。 对合并后的字符串进行排序&#xff0c;要求为&#xff1a;下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。 对排序后的字符串进行操作…

再造一个爱因斯坦?GPT-3 让我看到了名人“重生”的希望

作者&#xff1a;Manuel Araoz译者&#xff1a;弯月来源&#xff1a;CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;自从GPT-3推出以来&#xff0c;我就一直在做各种尝试。这是一项非常酷的技术&#xff0c;我发现最有趣的一项实验就是通过GPT-3与已故去的名人对话。在本…