当前位置:网站首页>事务的本质和死锁的原理
事务的本质和死锁的原理
2020-11-06 21:35:00 【程序猿欧文】
仅以MySQL和spring为例,,本文不介绍事务和锁的概念。
本文使用伪代码表示方法代码,仅仅表达方法的意义及事务注解
〇、事务的形状
在我心中,事务一直是这个样子的
x轴是上锁的资源,y轴是消耗的时间,
事务方块随着时间的流逝向下移动,
当碰触x轴时加锁,越过x轴时解锁
上图是对于方法a的事务形状,我起名【 事务方块】,很抱歉我不会做动图,本文以动图来表达最佳。
@Transactional function a(){
对A表修改,耗时五秒}
一、多事务
当一个方法调用多个被事务注解的子方法时情况是
上图是对于方法abc调用时,a方法、b方法、c方法的事务形状function abc(){
this.a(){}
this.c(){}}@Transactional function a(){
对A表修改,耗时五秒}@Transactional function b(){
对B表修改,耗时五秒}@Transactional function c(){
对C表修改,耗时五秒}
其中abc方法开始执行时,执行到a方法,锁定a表,当a方法结束b方法开始时,a表解锁,b表锁定,当b方法结束c方法开始时,b表解锁c表锁定。
相当于下图的三个事务方块联合且位置锁定一起下落,总运行时间15秒
如果并发请求两次abc方法则事务方块如下图
其中a表会先被请求1锁定5秒后解锁,再被请求2锁定5秒,
其中b表也会先被请求1锁定5秒后解锁,再被请求2锁定5秒,
其中c表也会先被请求1锁定5秒后解锁,再被请求2锁定5秒,
而请求1在解锁表a后紧接着又锁定了表b五秒,同时表a再被请求2锁定5秒
依次类推,请求2都在请求1解锁对应的表之后,锁定该表,
那么总运行时间20秒
二、大事务@Transactional function abc(){
this.a(){}
this.b(){}
this.c(){}}
funct.........
版权声明
本文为[程序猿欧文]所创,转载请带上原文链接,感谢
https://my.oschina.net/mikeowen/blog/4553869
边栏推荐
- Multi robot market share solution
- Asp.Net Core learning notes: Introduction
- 【字节跳动 秋招岗位开放啦】Ohayoo!放学别走,我想约你做游戏!!!
- What is alicloud's experience of sweeping goods for 100 yuan?
- 快速排序为什么这么快?
- Live broadcast preview | micro service architecture Learning Series live broadcast phase 3
- 游戏主题音乐对游戏的作用
- 面试官: ShardingSphere 学一下吧
- Interpretation of Cocos creator source code: engine start and main loop
- Pollard's Rho algorithm
猜你喜欢
随机推荐
What are PLC Analog input and digital input
华为Mate 40 系列搭载HMS有什么亮点?
仅用六种字符来完成Hello World,你能做到吗?
Building and visualizing decision tree with Python
只有1个字节的文件实际占用多少磁盘空间
It is really necessary to build a distributed ID generation service
一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试
Isn't data product just a report? absolutely wrong! There are university questions in this category
[C] (original) step by step teach you to customize the control element - 04, ProgressBar (progress bar)
Named entity recognition in natural language processing: tanford core LP ner (1)
Use modelarts quickly, zero base white can also play AI!
Flink的DataSource三部曲之一:直接API
ERD-ONLINE 免费在线数据库建模工具
How to turn data into assets? Attracting data scientists
MongoDB与SQL常用语法对应表
Markdown tricks
A course on word embedding
(2) ASP.NET Core3.1 Ocelot routing
Pattern matching: The gestalt approach一种序列的文本相似度方法
零基础打造一款属于自己的网页搜索引擎

