【发布时间】:2016-02-03 13:24:41
【问题描述】:
我有一张以Guid 作为主键的表。该表已经包含很多行。另外,我有一个win service,它对每一行执行一些操作(可能需要从另一个数据库读取和写入数据)。所以处理一行需要相当多的时间。 (平均约 100 秒)
我的 win 服务是这样工作的:
public class MyDto
{
public Guid Id { get; set; }
}
while (true){
if(time to start){
List<MyDto> rows = LoadData();
foreach(MyDto obj in rows){
Process(obj);//it takes in average about 100 sec
}
}
}
我需要减少所有行的执行时间。由于某些原因,我决定增加我赢得服务的次数。所以我需要每个 win 服务都处理自己的行集。
我已经参数化了我的LoadData() fun:
public List<MyDto> LoadData(int winServInstanceNumber){
}
所以我需要一个贡献函数取决于总赢服务实例数和创建赢服务实例数。
你能提供比
更好的东西吗?//on .net side
obj.Id.GetHashCode()%totalWinServiceInstancesCount
或
--on sql side
HASHBYTES('MD5', CAST(id as varbinary(16)))%totalWinServiceInstancesCount
【问题讨论】: