高并发下的读取问题,如何用给select语句加上行锁?

Zicl 发布于 2014/08/06 09:47
阅读 540
收藏 0

现有的一个表的结构大致如下:

现在我的需求是:当某个用户执行select top 5 LuckyNum from table order by NewID()选取5个幸运号码后,下一个用户执行相同操作的时候,从前一个用户选剩下的号码里选取,要求考虑高并发的情况。

加载中
0
雨翔河
雨翔河
我也在考虑类似的这样的问题,同求。如果数据多,且高并发,怎么处理?
0
JPer
JPer
队列啊~
0
甘薯
甘薯

仅仅是读取而已,需要加行锁吗?

我觉得是否可以认为加上约束条件,根据用户自身的数据产生一个类似于hash的唯一值,

然后从数据库中查找符合这样条件的数据就不会产生冲突了。

0
loki_lan
loki_lan
对请求做个队列
0
Z
Zicl

引用来自“loki_lan”的评论

对请求做个队列
能稍微说具体一点么?用队列可是select条件不变,选取出来的结果不是还会有重复的吗?
雨翔河
雨翔河
请求做了队列了,先进先出,不会重复,但是速度上会不会变慢?
0
l
le_kj

 避免实时读取数据库,把数据缓存起来;数据用队列装起来,读走就没了。

 

  

0
王海平
王海平
环境中有redis的话直接使用自带的队列接口就行,按一定顺序灌进去,取得时候是原子操作,取完就没有了 
0
酒逍遥
酒逍遥

高并发 行锁 数据库估计会挂吧...

把每个用户的请求放入队列里 一一执行吧....因为后一个用户的select 结果还依赖于前面所有用户select的结果.

返回顶部
顶部