当前位置:网站首页>事务的本质和死锁的原理
事务的本质和死锁的原理
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
边栏推荐
- IPFs rudder filecoin landing at the same time, fil currency price broke a thousand
- C + + and C + + programmers are about to be eliminated from the market
- [efficiency optimization] Nani? Memory overflow again?! It's time to sum up the wave!!
- Uncle Bob: the software architecture is similar to a house. Object oriented is the structure of the house, and the water pipe is functional programming
- What knowledge do Python automated testing learn?
- Even liver three all night, jvm77 high frequency interview questions detailed analysis, this?
- [Xinge education] poor learning host computer series -- building step 7 Simulation Environment
- 零基础打造一款属于自己的网页搜索引擎
- 如何对数据库账号权限进行精细化管理?
- 百万年薪,国内工作6年的前辈想和你分享这四点
猜你喜欢
It's easy to operate. ThreadLocal can also be used as a cache
【转发】查看lua中userdata的方法
给字节的学姐讲如何准备“系统设计面试”
Recommendation system based on deep learning
Kubernetes and OAM to build a unified, standardized application management platform knowledge! (Internet disk link attached)
What is alicloud's experience of sweeping goods for 100 yuan?
For a while, a dynamic thread pool was created, and the source code was put into GitHub
With the advent of tensorflow 2.0, can pytoch still shake the status of big brother?
Will blockchain be the antidote to the global epidemic accelerating the transformation of Internet enterprises?
面试官: ShardingSphere 学一下吧
随机推荐
【ElasticSearch搜索引擎】
ERD-ONLINE 免费在线数据库建模工具
Even liver three all night, jvm77 high frequency interview questions detailed analysis, this?
Recommendation system based on deep learning
Markdown tricks
游戏开发中的新手引导与事件管理系统
Jmeter——ForEach Controller&Loop Controller
Even liver three all night, jvm77 high frequency interview questions detailed analysis, this?
C語言I部落格作業03
DC-1靶機
Custom function form of pychar shortcut key
Elasticsearch数据库 | Elasticsearch-7.5.0应用搭建实战
这个项目可以让你在几分钟快速了解某个编程语言
事务的隔离级别与所带来的问题
What course of artificial intelligence? Will it replace human work?
只有1个字节的文件实际占用多少磁盘空间
What if the front end doesn't use spa? - Hacker News
Introduction to Google software testing
electron 實現檔案下載管理器
Pattern matching: The gestalt approach一种序列的文本相似度方法