问题:
最近接触一个任务,多个线程需要频繁更新mysql的同一条数据,使用了脚本进行并发测试,结果发现数据结构与预期不一致。
数据表的结构类似如下:
操作数据的步骤依次是
- 先取出mysql中数据
- 应用程序中做赋值操作count = count + 1
- 最后update变更后的值到mysql中最近接触一个任务,需要频繁更新mysql的同一条数据,使用了脚本进行并发测试,结果发现数据结构与预期不一致。
最近整理了一些Java架构学习视频和大厂项目底层知识点,需要的同学欢迎私信我【Java】发给你~
先取出mysql中数据:
select count from table where id = #{id};
应用程序中java代码实现赋值操作count = count + 1:
int count = count + 1
最后update变更后的值到mysql中:
update table set count = #{count} where id = #{id};
多次使用脚本开启100个线程累积1w次过后,发现总是小于1w;
分析一下,线程T1 获取到id 为1 的记录后在内存中做了count的累积&#x