已解决
【技巧】并发读取Mysql数据保证读取到的数据不重复
来自网友在路上 163863提问 提问时间:2023-11-11 21:23:57阅读次数: 63
最佳答案 问答题库638位专家为你答疑解惑
【技巧】并发读取Mysql数据保证读取到的数据不重复
使用场景:
并发场景下, 保证不获取到重复的数据
思路: 先通过 MYSQL锁 去占位打标识,然后再去取数据
相当于几个人抢蛋糕, A先把蛋糕打上记号 蛋糕是A的, 然后再慢慢吃
表结构
表 t_userid
name
val
used_flag 是否使用过
lock_token 锁标识默认0
lock_token_time 加锁时间 方便超时之后释放锁
1 加锁
-- 生成随机加锁token = 123456
UPDATE t_user u
SET u.lock_token = 123456, u.lock_token_time = NOW()WHERE u.id IN (
SELECT id FROM (
SELECTid
FROMt_user
WHERE
-- 未被使用过used_flag = 0
-- 未被加锁AND lock_token = 0
-- 这里限制每次取多少条数据, 取决于业务LIMIT 10
-- 上锁FOR UPDATE) a
)
2 获取
SELECT * FROM t_user u
WHERE -- 未被使用过used_flag = 0
-- 指定的token锁AND lock_token = 123456
补充, 可以通过lock_token_time判断 如果超时的 可以去释放锁 比如超时半个小时等
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"【技巧】并发读取Mysql数据保证读取到的数据不重复":http://eshow365.cn/6-37932-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!