当前位置:网站首页>Yyds dry inventory MySQL RC transaction isolation level implementation
Yyds dry inventory MySQL RC transaction isolation level implementation
2022-07-01 16:58:00 【Official account javaedge】
Read Committed, During the transaction , As long as other transactions modify the data and submit , You can read the data modified by others , So there will be non repeatable 、 The problem of unreal reading .
ReadView The mechanism is based on undo log A set of view reading mechanism implemented by version chain , The transaction generates a ReadView:
- If the data is updated for the transaction itself , I can read
- Or when you generate ReadView The value modified by the previously submitted transaction , Also readable
- But if you generate ReadView when , It's already active , But if it's in your generation ReadView Then modified the data and submitted , You can't read
- Or you generate ReadView The transaction started later modifies the data , Also submitted , I can't read
So the above mechanism is ReadView How a principle of is based on ReadView Realization RC? Core design : When a transaction is set RC, Every time he makes a query , Regenerate a ReadView!
There is a row of data in the database , It's a business id=50 A business of , Inserted a long time ago , Currently active transactions :
- Business A(id=60)
- Business B(id=70)
Now business B launch update, Update this data to b, So at this time, the data trx_id Will become a business B Of id=70, At the same time, a undo log:

At this time , Business A To initiate a query operation , It will generate a ReadView

When the transaction A Initiate a query , Find the current data trx_id=70. Belong to ReadView The business of id Between ranges , It means that he generated ReadView There was this active business before , It is this transaction that modifies the value of this data , But at this point the business B It hasn't been submitted yet , therefore ReadView Of m_ids In the active transaction list , Yes [60, 70] Two id, At this point, according to ReadView Mechanism , Business A Cannot find transaction B Modified value b.
Then follow it undo log Look down the version chain , You'll find an original value , Found that the trx_id yes 50, Less than the present ReadView Inside min_trx_id, It means that he generated ReadView Before , There is a transaction that inserts this value and has already committed , So you can find the original value .
next , What if B Submit , When submitted, the transaction will be explained B Will not be active in the database . Business A Check again next time , You can read the transaction B The modified value . How on earth does that make things A Be able to read the submitted transaction B The modified value ?
Make the transaction A Next time you initiate a query , Regenerate into one ReadView, The only active transactions in the database are transactions A, therefore :
- min_trx_id yes 60
- mac_trx_id yes 71
- m_ids=60, Business B Of id=70 Will not appear in m_ids Active transaction list
At this point, the transaction A Again, based on this ReadView Go to query , You'll find this data trx_id=70, Although in ReadView Of min_trx_id and max_trx_id Between ranges , But not at this time m_ids In the list , Explain the business B When generating this ReadView Submitted before . Explain that you can find the transaction this time B The modified value , At this point, the transaction A You'll find the value B.
边栏推荐
- 嗨 FUN 一夏,与 StarRocks 一起玩转 SQL Planner!
- How to solve the problem that the battery icon of notebook computer does not display
- 巴比特 | 元宇宙每日必读:奈雪币、元宇宙乐园、虚拟股票游戏...奈雪的茶这波“操作拉满”的营销活动你看懂了吗?...
- String类
- 今天14:00 | 港大、北航、耶鲁、清华、加大等15位ICLR一作讲者精彩继续!
- Template Engine Velocity Foundation
- 软件工程导论——第六章——详细设计
- China sorbitol Market Forecast and investment strategy report (2022 Edition)
- SystemVerilog-结构体(二)
- P2592 [zjoi2008] birthday party (DP)
猜你喜欢

如何写出好代码 — 防御式编程指南
![[nodemon] app crashed - waiting for file changes before starting... resolvent](/img/ee/9830afd86e092851a2a906cb994949.png)
[nodemon] app crashed - waiting for file changes before starting... resolvent

How wild are hackers' ways of making money? CTF reverse entry Guide

Machine learning 11 clustering, outlier discrimination

Template Engine Velocity Foundation

美国国家安全局(NSA)“酸狐狸”漏洞攻击武器平台技术分析报告

sql刷题586. 订单最多的客户

【Try to Hack】vulnhub DC4

免费抽奖 | 《阿巴豆》探索未来系列盲盒数字版权作品全网首发!

How to restore the system of Sony laptop
随机推荐
Tutorial on the principle and application of database system (001) -- MySQL installation and configuration: installation of MySQL software (Windows Environment)
你还在用收费的文档管理工具?我这有更牛逼的选择!完全免费
挖财学堂班主任给的证券账户安全吗?能开户吗?
6月刊 | AntDB数据库参与编写《数据库发展研究报告》 亮相信创产业榜单
Gold, silver and four want to change jobs, so we should seize the time to make up
剑指 Offer II 105. 岛屿的最大面积
PR basic clip operation / video export operation
Rhcsa Road
Redis 分布式锁
如何写出好代码 — 防御式编程指南
Installation and use of sqoop
【splishsplash】关于如何在GUI和json上接收/显示用户参数、MVC模式和GenParam
sql刷题627. 变更性别
ACL 2022 | 分解的元学习小样本命名实体识别
ACM MM 2022视频理解挑战赛视频分类赛道冠军AutoX团队技术分享
How wild are hackers' ways of making money? CTF reverse entry Guide
【Kotlin】高阶函数介绍
模板引擎Velocity 基础
Jojogan practice
MySQL learning summary