tp6高并发更新
- 在高并发应用场景下,MYSQL的更新可能会出错
- git代码
同时更新锁定时出错
- http://xx.xx.xx.xx:xx/behavior/Operate/increase 添加
- http://xx.xx.xx.xx:xx/behavior/Operate/Highconcurrency 锁定
添加数据测试
- 用ab进行添加测试
- ab -c 100 -n 100 http://xx.xx.xx.xx:xx/behavior/Operate/increase
- 并发100,100个请求(一次请求添加一条数据)
- 添加没有什么问题
锁定数据测试
- 用ab进行锁定测试
- ab -c 100 -n 100 http://xx.xx.xx.xx:xx/behavior/Operate/Highconcurrency
- 并发100,100个请求(取出符合status=0条件的数据并更新为1)
- 请求100次只更新了50条数据,说明存在高并发带来的更新错误
解决方案
-
MYSQL加了个悲观锁,解决了这个问题
-
用ab进行添加测试
-
ab -c 100 -n 100 http://xx.xx.xx.xx:xx/behavior/Operate/increase
-
删除了之前数据并且添加了全新的100条数据
-
ab -c 99 -n 99 http://xx.xx.xx.xx:xx/behavior/Operate/HighconcurrencyS
-
并发99,99个请求(取出符合status=0条件的数据并更新为1)
-
精准锁定在第99个