当前位置:网站首页>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 .
边栏推荐
- How should PMP learning ideas be realized?
- C language - Introduction - Foundation - syntax - [variable, constant light, scope] (V)
- 2022-2028 global tensile strain sensor industry research and trend analysis report
- Global and Chinese market of bipolar generators 2022-2028: Research Report on technology, participants, trends, market size and share
- Explain TCP protocol in detail three handshakes and four waves
- The old-fashioned synchronized lock optimization will make it clear to you at once!
- Horizon sunrise X3 PI (I) first boot details
- How do microservices aggregate API documents? This wave of show~
- Global and Chinese market of air fryer 2022-2028: Research Report on technology, participants, trends, market size and share
- Research Report on the development trend and Prospect of global and Chinese zinc antimonide market Ⓚ 2022 ~ 2027
猜你喜欢
2022-2028 global visual quality analyzer industry research and trend analysis report
Sequence model
2022-2028 global elastic strain sensor industry research and trend analysis report
Latex download installation record
165 webmaster online toolbox website source code / hare online tool system v2.2.7 Chinese version
2022-2028 global gasket plate heat exchanger industry research and trend analysis report
2022-2028 global industry research and trend analysis report on anterior segment and fundus OTC detectors
C language - Introduction - Foundation - syntax - [identifier, keyword, semicolon, space, comment, input and output] (III)
CLion-控制台输出中文乱码
2022-2028 global strain gauge pressure sensor industry research and trend analysis report
随机推荐
Global and Chinese market of planar waveguide optical splitter 2022-2028: Research Report on technology, participants, trends, market size and share
At the age of 30, I changed to Hongmeng with a high salary because I did these three things
老掉牙的 synchronized 锁优化,一次给你讲清楚!
Fatal error in golang: concurrent map writes
Analysis report on the development status and investment planning of China's modular power supply industry Ⓠ 2022 ~ 2028
C language - Introduction - Foundation - syntax - [operators, type conversion] (6)
After unplugging the network cable, does the original TCP connection still exist?
Global and Chinese PCB function test scale analysis and development prospect planning report Ⓑ 2022 ~ 2027
Relationship and operation of random events
【LeetCode 42】501. Mode in binary search tree
Explain TCP protocol in detail three handshakes and four waves
Rules for using init in golang
Simulate EF dbcontext with MOQ - mocking EF dbcontext with MOQ
C language - Introduction - Foundation - syntax - [variable, constant light, scope] (V)
Tkinter Huarong Road 4x4 tutorial II
Development trend and market demand analysis report of high purity tin chloride in the world and China Ⓔ 2022 ~ 2027
Awk from getting started to digging in (11) detailed explanation of awk getline function
Target detection -- intensive reading of yolov3 paper
Markdown syntax
Launchpad x | mode