当前位置:网站首页>On the concurrency of update operation
On the concurrency of update operation
2020-11-08 13:52:00 【osc_7eqzxl4g】
In a high concurrency scenario , This is often the case :
A Please come here , Look up a piece of data , Conduct update operation , meanwhile B Please come here at this time , Query this data , And operate . And then there will be B stay A After that, the query operation will be carried out , But the actual B But the data is A Cover .
Table name A, Field called number, As follows SQL sentence :
A operation sentence 1:select num from store where id='1';
Suppose that at this point a gets num= 99
B operation sentence 2:select num from store where id='1';
Because Party A has not yet update operation , B also got num= 99
Now A Conduct update operation
update store set num =${num} +1 where id='1';
At this time, it is written to the database num That is to say 100
here B The request also initiated the update operation :
update store set num =${num} +1 where id='1';
Our expectation at this time should have been 101 Of , But actually B I wrote in the database again 100
Solution :
(1) Introduce the concept of a version number , In the table A Add one version Field
A operation sentence 1:select num,version from store where id='1';
Suppose that at this point a gets num= 99 version =1
B operation sentence 2:select num,version from store where id='1';
Because Party A has not yet update operation , B also got num= 99 version=1
Now A Conduct update operation
update store set num =${num} +1 where id='1' and version = ${version};
At this time, it is written to the database num That is to say 100, version =2
here B The request also initiated the update operation :
update store set num =${num} +1 where id='1' and version = ${version} ;
At this time, we found the condition version = 1 Don't set up , Because the last step is version Have been to 2 了 , therefore update Cannot update .
(2) Solution :update A set number=number+1 where id=1; Statements are processed directly
Table name A, Field called number, As follows SQL sentence :
sentence 1:update A set number=number+1 where id=1;
sentence 2:update A set number=number+2 where id=1;
Suppose these two SQL The statement is simultaneously mysql perform ,id=1 In the record number The original value of the field is 99, So is it possible that :
sentence 1 and 2 Because at the same time , They got number The values are all 99, It's all in 10 On the basis of 1 and 2, Lead to the final number Is updated to 100 or 101, instead of 102
This is actually Relational database itself needs to solve the problem . First , They were also MySQL perform , What you mean is that they are executed concurrently , The concurrent transaction is supported by special theory in relational database - ACID, The theory of transaction parallelism , All relational databases implement , Include Oracle, MySQL We need to follow this principle .
The simple understanding is the principle of lock . This is the first time update Will hold id=1 This line records Exclusive lock , the second update You need to have an exclusive lock on this record to modify it , Normal word , the second update It will block , Until the first one update Submit successfully , He'll get the lock , To modify the data .
in other words , According to the theory of relational database , these two items. update If they all succeed ,id=1 Of number It must be modified to 22. If not 22, That's a serious problem with database implementation bug.
版权声明
本文为[osc_7eqzxl4g]所创,转载请带上原文链接,感谢
边栏推荐
- WLAN 直连(对等连接或 P2P)调研及iOS跨平台调研
- 【Python 1-6】Python教程之——数字
- Interpretation of deepmind's latest paper: the causal reasoning algorithm in discrete probability tree is proposed for the first time
- Python基础语法
- 技术总监7年总结,如何进行正确的沟通?
- Welcome to offer, grade P7, face-to-face sharing, 10000 words long text to take you through the interview process
- Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
- OR Talk NO.19 | Facebook田渊栋博士:基于蒙特卡洛树搜索的隐动作集黑盒优化 - 知乎
- 漫画|讲解一下如何写简历&项目
- 三、函数的参数
猜你喜欢

Enabling education innovation and reconstruction with science and technology Huawei implements education informatization

华为在5G手机市场占据绝对优势,市调机构对小米的市占出现分歧

The progress bar written in Python is so wonderful~

wanxin finance

android基础-CheckBox(复选框)

Flink: from introduction to Zhenxiang (3. Reading data from collection and file)

Huawei has an absolute advantage in the 5g mobile phone market, and the market share of Xiaomi is divided by the market survey organization

B站stm32视频学习

This time Kwai tiktok is faster than shaking.

Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
随机推荐
CSP考试须知与各种小技巧
重返全球第三,小米做对了什么?
This paper analyzes the top ten Internet of things applications in 2020!
别再在finally里面释放资源了,解锁个新姿势!
2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
Android Basics - check box
Hematemesis! Alibaba Android Development Manual! (Internet disk link attached)
PMP考试通过心得分享
Major changes in Huawei's cloud: Cloud & AI rises to Huawei's fourth largest BG with full fire
模板引擎的整理归纳
Returning to the third place in the world, what did Xiaomi do right?
On DSA of OpenGL
Eight ways to optimize if else code
Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
When kubernetes encounters confidential computing, see how Alibaba protects the data in the container! (Internet disk link attached)
供货紧张!苹果被曝 iPhone 12 电源芯片产能不足
android基础-CheckBox(复选框)
后端程序员必备:分布式事务基础篇
Q & A and book giving activities of harbor project experts
你的云服务器可以用来做什么?云服务器有什么用途?