当前位置:网站首页>The essence of transaction and the principle of deadlock

The essence of transaction and the principle of deadlock

2020-11-06 21:35:00 Irving the procedural ape

Only with MySQL and spring For example ,, This article does not introduce the concepts of transactions and locks .
This paper uses pseudo code to represent method code , Only express the meaning of the method and transaction annotation
〇、 The shape of the transaction
In my heart , Business has always been like this

x Axis is a locked resource ,y The axis is the time consumed ,
The transaction box moves down over time ,
When touching x Lock the shaft , Skip over x When the axis is unlocked
The picture above is about the method a The transaction shape of , I named it 【 Transaction box 】, I'm sorry I don't know how to do motion maps , In this paper, we express the best by moving graph .

@Transactional
function a(){
     Yes A Table modification , It took five seconds
}
One 、 A lot of business
When a method calls multiple child methods annotated by a transaction, the situation is

The picture above is about the method abc Invocation time ,a Method 、b Method 、c The transaction shape of the method
function abc(){
    this.a(){}
    this.c(){}
}
@Transactional
function a(){
     Yes A Table modification , It took five seconds
}
@Transactional
function b(){
     Yes B Table modification , It took five seconds
}
@Transactional
function c(){
     Yes C Table modification , It took five seconds
}
among abc When the method starts to execute , Execute to a Method , lock a surface , When a Method end b At the beginning of the method ,a Table unlocking ,b Table locking , When b Method end c At the beginning of the method ,b Table unlocking c Table locking .
It is equivalent to that the three transaction blocks in the figure below are united and locked together , Total operation time 15 second

If concurrent requests are made twice abc Method, the transaction box is shown in the figure below

among a The watch will be asked first 1 lock 5 Seconds later to unlock , Be asked again 2 lock 5 second ,
among b The watch will also be requested first 1 lock 5 Seconds later to unlock , Be asked again 2 lock 5 second ,
among c The watch will also be requested first 1 lock 5 Seconds later to unlock , Be asked again 2 lock 5 second ,
The request 1 In the unlock table a And then it locked the watch b Five seconds , At the same time a Be asked again 2 lock 5 second
By analogy , request 2 All asking for 1 After unlocking the corresponding table , Lock the table ,
So the total running time 20 second
Two 、 Large transactions
@Transactional
function abc(){
    this.a(){}
    this.b(){}
    this.c(){}
}

funct.........

版权声明
本文为[Irving the procedural ape]所创,转载请带上原文链接,感谢