当前位置:网站首页>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 .
边栏推荐
- Service call feign of "micro service"
- Global and Chinese market of air fryer 2022-2028: Research Report on technology, participants, trends, market size and share
- China battery grade manganese sulfate Market Forecast and strategic consulting report (2022 Edition)
- DR6018-CP01-wifi6-Qualcomm-IPQ6010-IPQ6018-FAMILY-2T2R-2.5G-ETH-port-CP01-802-11AX-MU-MIMO-OFDMA
- Global and Chinese market of planar waveguide optical splitter 2022-2028: Research Report on technology, participants, trends, market size and share
- The 14th five year plan and investment risk analysis report of China's hydrogen fluoride industry 2022 ~ 2028
- 如何编写单元测试用例
- Reading notes on how to connect the network - hubs, routers and routers (III)
- Investment analysis and future production and marketing demand forecast report of China's paper industry Ⓥ 2022 ~ 2028
- Luogu deep foundation part 1 Introduction to language Chapter 4 loop structure programming (2022.02.14)
猜你喜欢
How to ensure the uniqueness of ID in distributed environment
Clion console output Chinese garbled code
26. Delete duplicates in the ordered array (fast and slow pointer de duplication)
Logstack configuration details -- elasticstack (elk) work notes 020
Sword finger offer 30 contains the stack of Min function
【LeetCode 42】501. Mode in binary search tree
C language - Introduction - Foundation - syntax - [variable, constant light, scope] (V)
[C Advanced] file operation (2)
How do microservices aggregate API documents? This wave of show~
Dede plug-in (multi-function integration)
随机推荐
Service call feign of "micro service"
C语言-入门-基础-语法-[运算符,类型转换](六)
CLion-控制台输出中文乱码
Launchpad x | mode
Deadlock in channel
Research and investment strategy report of China's electronic hydrogen peroxide industry (2022 Edition)
Logstack configuration details -- elasticstack (elk) work notes 020
Global and Chinese market of air fryer 2022-2028: Research Report on technology, participants, trends, market size and share
After unplugging the network cable, does the original TCP connection still exist?
Markdown syntax
Talk about single case mode
Simulate EF dbcontext with MOQ - mocking EF dbcontext with MOQ
Global and Chinese markets of thrombography hemostasis analyzer (TEG) 2022-2028: Research Report on technology, participants, trends, market size and share
Horizon sunrise X3 PI (I) first boot details
Report on research and investment prospect prediction of China's electronic grade sulfuric acid industry (2022 Edition)
Opencv environment construction (I)
Global and Chinese market of wheel hubs 2022-2028: Research Report on technology, participants, trends, market size and share
Flutter 小技巧之 ListView 和 PageView 的各種花式嵌套
C language - Introduction - Foundation - syntax - data type (4)
C语言-入门-基础-语法-[标识符,关键字,分号,空格,注释,输入和输出](三)