0
我正在编写一个应用程序。有30个线程读取一个表格进行输入。例如,提高并发选择和更新的性能
Select top 1 name from table1 where flag != 1 order by mypriority
现在,当名称被读取时,位列被更新以标记该行被读取。例如,
Update table1 set flag = 1 where name = 'name'
update语句就在select语句之后。 我面临的问题是,许多线程读取同一行,并因此处理重复工作的相同名称。
我想:
Select top 1 name from table1 with (updlock) where flag != 1
这使得一次读取一行。线程等待一个更新完成。所以,他们可以读下一个名字。所以,没有多线程的好处。
有人可以建议最佳方法/使用方法。
请问,如果我的问题不是很清楚。
是否有一个原因,你必须一次“读”一行?此外,你有一个查询与TOP但不是ORDER BY。这意味着每次运行此查询时,第一行可能会得到不同的值。 – 2014-08-29 18:15:10
@SeanLange:我刚刚添加了订单。所以这些线程需要一行进行一些处理并将结果存储在其他行中。这种处理就像去一些网站并获取数据。 – 2014-08-29 18:18:41