当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- CSP考试须知与各种小技巧
- python基础教程python opencv pytesseract 验证码识别的实现
- 2035我们将建成这样的国家
- 重返全球第三,小米做对了什么?
- Tips and skills of CSP examination
- This time Kwai tiktok is faster than shaking.
- Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
- Rust : 性能测试criterion库
- I used Python to find out all the people who deleted my wechat and deleted them automatically
- AQS analysis
猜你喜欢

供货紧张!苹果被曝 iPhone 12 电源芯片产能不足

当Kubernetes遇到机密计算,看阿里巴巴如何保护容器内数据的安全!(附网盘链接)

This year's salary is 35W +! Why is the salary of Internet companies getting higher and higher?

Powershell 使用.Net对象发送邮件

我们做了一个医疗版MNIST数据集,发现常见AutoML算法没那么好用

10 common software architecture patterns

2020-11-05

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

Major changes in Huawei's cloud: Cloud & AI rises to Huawei's fourth largest BG with full fire

最全!阿里巴巴经济体云原生实践!(附网盘链接)
随机推荐
基于阿里云日志服务快速打造简版业务监控看板
laravel8更新之维护模式改进
2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
一文读懂机器学习“数据中毒”
2035我们将建成这样的国家
漫画|讲解一下如何写简历&项目
Millet and oppo continue to soar in the European market, and Xiaomi is even closer to apple
Welcome to offer, grade P7, face-to-face sharing, 10000 words long text to take you through the interview process
Blockchain weekly: the development of digital currency is written into the 14th five year plan; Biden invited senior adviser of MIT digital currency program to join the presidential transition team; V
浅谈单调栈
Get PMP certificate at 51CTO College
[Python 1-6] Python tutorial 1 -- number
Harbor项目高手问答及赠书活动
这次,快手终于比抖音'快'了!
2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...
DeepMind 最新论文解读:首次提出离散概率树中的因果推理算法
浅谈OpenGL之DSA
华为云重大变革:Cloud&AI 升至华为第四大 BG ,火力全开
大龄程序员没有出路吗?
2018中国云厂商TOP5:阿里云、腾讯云、AWS、电信、联通 ...