当前位置:网站首页>MySQL transaction mvcc principle
MySQL transaction mvcc principle
2022-07-04 09:26:00 【Studious little Tao】
Let's discuss in Mysql RR and RC Under isolation level MVCC Multi version concurrency control , stay Mysql in MVCC The mechanism is to use undo log Version chain mechanism implementation ReadView Mechanism .
ReadView
ReadView What is it? , Simply speaking ,ReadView When starting a transaction , It will generate a ReadView Used to implement MVCC Mechanism . Here is ReadView Some key things contained in
- m_ids: This means at this time mysql Which transactions in the transaction have not been committed
- min_trx_id: Minimum business Id, Namely m_ids The smallest transaction in Id
- max_trx_id: The biggest business Id, Namely Mysql The next transaction to generate Id, Is the biggest thing Id
- creator_trx_id: Current affairs Id
stay Mysql There are two hidden fields behind each data row in ,trx_id and roll_pointer
- trx_id: Current data update transactions Id
- roll_pointer: Point to next undo log Version chain , Used to find undo log Data in the version chain
RC ISOLATION Realization principle
Read submitted : Transactions can only read committed data ; stay Mysql in , Each transaction query generates a new ReadView To achieve RC.
MVCC Realization RC Isolation level : Each query will generate a new Readview, Let's look at the following example
1、 Here is a piece of data in the database :
2、 If A The transaction queries the submitted data ,trx_id = 1, At this time, I will make a judgment , Just to judge trx_id Less than min_trx_id, So it proves that this data dates back to A The transaction has been committed before it starts , So you can query this data .
3、 If the transaction B(id = 25) Modified this line of data , And submitted , So this data is trx_id Will be changed to trx_id = 25, meanwhile roll_pointer Will point to trx_id = 10 That piece of data , as follows undo log Version chain . At this point, the transaction A Launch the query again , Will generate a new ReadView, So at this time trx_id stay min_trx_id and ma_trx_id Within limits , Not at the same time m_ids In the list , So it proves that this transaction change has been committed , stay RC It can be read under the isolation level .
4、 When a transaction A After modifying this data , The trx_id Changed to 20, here trx_id Although in m_ids In the list , At the same time, the current data trx_id The value of and ReadView in creator_id The value of is the same , This shows that this data is a transaction A Altered , So at this time A Transactions can be queried .
RR ISOLATION Realization principle
Repeatable : Business A Multiple queries , The result is the same ;Mysql By generating a fixed ReadView Realization RR Isolation level .
MVCC Realization RR Isolation level : Each query will be used when the transaction is opened ReadView, Let's look at the following example
1、 Here is a piece of data in the database :
2、 If the transaction A(id = 20) And is a matter B(id = 25) Open the transaction at the same time , Well, at this time ReadView yes :
3、 If the transaction A(id = 20) Open query , Find current data trx_id = 10, Less than min_trx_id, So it means that this data is in the transaction A Submitted before opening , So this data can be queried .
4、 If the transaction B(id = 25) Changed data , So at this point trx_id = 25, By looking at A Of ReadView You can see ,trx_id = 25 stay m_ids In the list , So it explains the transaction B And business A Is a transaction started at the same time , So in RR It cannot be queried under the isolation level .
5、 If the transaction A(id = 20) Changed this data again , So at this time trx_id = 20, By looking at A Of ReadView You can see ,trx_id = 20 stay m_ids In the list , however trx_id = 20 And A Of ReadView in creator_trx_id The value of is the same , So this data is A The transaction itself changes , So it can be queried .
6、 If there is a new transaction at this time C(id = 30) Changed this data , So at this time trx_id = 30, By inquiring ReadView You can see ,trx_id = 30 No longer m_ids In the list , however trx_id Greater than max_trx_id, So it means that this data is in A Started after the transaction is started , Therefore, it is impossible to query .
summary
The above mainly introduces MVCC Realization RR and RC Implementation of isolation level , Rookie learning summary , Bosses do not spray .
边栏推荐
- After unplugging the network cable, does the original TCP connection still exist?
- 20220701 barbarat lemma proof
- MySQL foundation 02 - installing MySQL in non docker version
- Implementation principle of redis string and sorted set
- C language - Introduction - Foundation - syntax - data type (4)
- Opencv environment construction (I)
- 2022-2028 global gasket metal plate heat exchanger industry research and trend analysis report
- How does idea withdraw code from remote push
- In depth investigation and Strategic Research Report on China's motion controller Market (2022 Edition)
- 2022-2028 global seeder industry research and trend analysis report
猜你喜欢
C语言-入门-基础-语法-数据类型(四)
Target detection -- intensive reading of yolov3 paper
Mantis creates users without password options
2022-2028 global industry research and trend analysis report on anterior segment and fundus OTC detectors
After unplugging the network cable, does the original TCP connection still exist?
2022-2028 global edible probiotic raw material industry research and trend analysis report
Markdown syntax
How to ensure the uniqueness of ID in distributed environment
2022-2028 global visual quality analyzer industry research and trend analysis report
Function comparison between cs5261 and ag9310 demoboard test board | cost advantage of cs5261 replacing ange ag9310
随机推荐
Launpad | basic knowledge
Horizon sunrise X3 PI (I) first boot details
Basic discipline formula and unit conversion
Basic data types in golang
Global and Chinese market of air fryer 2022-2028: Research Report on technology, participants, trends, market size and share
Global and Chinese trisodium bicarbonate operation mode and future development forecast report Ⓢ 2022 ~ 2027
"How to connect the network" reading notes - Web server request and response (4)
Flutter 小技巧之 ListView 和 PageView 的各種花式嵌套
地平线 旭日X3 PI (一)首次开机细节
"How to connect the Internet" reading notes - FTTH
The old-fashioned synchronized lock optimization will make it clear to you at once!
Sword finger offer 30 contains the stack of Min function
AMLOGIC gsensor debugging
How to batch change file extensions in win10
C language - Introduction - Foundation - syntax - [variable, constant light, scope] (V)
Reading notes on how to connect the network - tcp/ip connection (II)
HMS core helps baby bus show high-quality children's digital content to global developers
保姆级JDEC增删改查练习
C language - Introduction - Foundation - syntax - [identifier, keyword, semicolon, space, comment, input and output] (III)
Awk from entry to earth (15) awk executes external commands