当前位置:网站首页>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 .
边栏推荐
- HMS core helps baby bus show high-quality children's digital content to global developers
- CLion-控制台输出中文乱码
- GoLand environment variable configuration
- Solution to null JSON after serialization in golang
- 2022-2028 global elastic strain sensor industry research and trend analysis report
- After unplugging the network cable, does the original TCP connection still exist?
- Markdown syntax
- Awk from entry to earth (18) GAW K line manual
- Explain TCP protocol in detail three handshakes and four waves
- After unplugging the network cable, does the original TCP connection still exist?
猜你喜欢
](/img/3f/4d8f4c77d9fde5dd3f53ef890ecfa8.png)
C語言-入門-基礎-語法-[運算符,類型轉換](六)

Some points needing attention in PMP learning

2022-2028 global gasket plate heat exchanger industry research and trend analysis report

保姆级JDEC增删改查练习
](/img/89/0f5f4ba07c637b09abe873016cba2d.png)
C语言-入门-基础-语法-[标识符,关键字,分号,空格,注释,输入和输出](三)

2022-2028 global small batch batch batch furnace industry research and trend analysis report

If you can quickly generate a dictionary from two lists
![[error record] no matching function for call to 'cacheflush' cacheflush();)](/img/79/c00f9c835606b2dce1d342ec368d24.jpg)
[error record] no matching function for call to 'cacheflush' cacheflush();)

After unplugging the network cable, does the original TCP connection still exist?
![[C Advanced] file operation (2)](/img/50/e3f09d7025c14ee6c633732aa73cbf.jpg)
[C Advanced] file operation (2)
随机推荐
ArrayBuffer
How to batch change file extensions in win10
Development trend and market demand analysis report of high purity tin chloride in the world and China Ⓔ 2022 ~ 2027
Dede plug-in (multi-function integration)
Fatal error in golang: concurrent map writes
Talk about single case mode
GoLand environment variable configuration
Global and Chinese trisodium bicarbonate operation mode and future development forecast report Ⓢ 2022 ~ 2027
Are there any principal guaranteed financial products in 2022?
Implementation principle of redis string and sorted set
C语言-入门-基础-语法-[变量,常亮,作用域](五)
[error record] no matching function for call to 'cacheflush' cacheflush();)
保姆级JDEC增删改查练习
Investment analysis and prospect prediction report of global and Chinese high purity tin oxide Market Ⓞ 2022 ~ 2027
什么是权限?什么是角色?什么是用户?
Global and Chinese market of air fryer 2022-2028: Research Report on technology, participants, trends, market size and share
2022-2028 global gasket plate heat exchanger industry research and trend analysis report
《网络是怎么样连接的》读书笔记 - FTTH
How to write unit test cases
Explanation of closures in golang