当前位置:网站首页>On the concurrency of update operation
On the concurrency of update operation
2020-11-07 20:56:00 【daydaydream】
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.
版权声明
本文为[daydaydream]所创,转载请带上原文链接,感谢
边栏推荐
- Do not understand the underlying principle of database index? That's because you don't have a B tree in your heart
- 工作1-3年的程序员,应该具备怎么样的技术能力?该如何提升?
- 如何应对事关业务生死的数据泄露和删改?
- 深入web workers (上)
- 使用 Xunit.DependencyInjection 改造测试项目
- 留给快手的时间不多了
- C language I blog assignment 03
- WPF 关于绘图个人总结
- 数据库基本操作
- Design pattern of facade and mediator
猜你喜欢

Got timeout reading communication packets解决方法

不要把异常当做业务逻辑,这性能可能你无法承受

关于晋升全栈工程师,从入门到放弃的神功秘籍,不点进来看一看?

Animation techniques and details you may not know

Principles of websocket + probuf

Code Review Best Practices

Reflection on a case of bus card being stolen and swiped

How to learn technology efficiently

京淘项目day09

From technology to management, the technology of system optimization is applied to enterprise management
随机推荐
Practice of Xiaoxiong school development board: real equipment access of smart street lamp sandbox experiment
awk实现类sql的join操作
laravel8更新之维护模式改进
不懂数据库索引的底层原理?那是因为你心里没点b树
Got timeout reading communication packets解决方法
easyui dialog“缓存问题”
小熊派开发板实践:智慧路灯沙箱实验之真实设备接入
Awk implements SQL like join operation
Get started, GIT
微信小程序request报400错误 @RequestBody接收不到
数据库基本操作
三步一坑五步一雷,高速成长下的技术团队怎么带?
栈-括号的匹配
ROS学习---远程启动ROS节点
构造请求日志分析系统
Principles of websocket + probuf
The instanceof operator in ecmascript7 specification
GrowingIO 响应式编程探索和实践
Implementation of Caesar cipher
The prediction accuracy of the model is as high as 94%! Using machine learning to solve the 200 billion dollar inventory problem perfectly