SQL Server에서 이것을 호출하고 있습니까?
일괄 업데이트를 별도의 스레드에서 실행하고 대기열에 넣었고 처리 중임을 신속하게 되돌려 보내지 않는 이유는 무엇입니까?
너무 많은 데이터베이스 연결을 사용하지 못하도록 방지하기 위해 데이터를 대기열에 넣었으며 10 초마다 대기열에있는 데이터를 처리합니다.
그러면 두 번째 기능이 상태를 확인할 수 있습니다.
UPDATE :
나는 처리를 수행하는 정적 클래스가 있고, 코드는 끝입니다. 기본적으로 호출이 들어오고 즉시 대기열에 넣었습니다. 대기열은 백그라운드에서 실행되며 10 초마다 점검하고 거기에있는 모든 것을 처리합니다.
나는 내 큐에 ConcurrentQueue
을 사용하므로 동시에 쓰고 처리 할 수 있습니다.
그래서 이것을 사용하여 업데이트를 시작한 다음 다른 통화에서 처리 된 통화 수를 확인하고 해당 정보를 돌려받을 수 있습니다. 각 대량 삽입에 대한 조작 키를 생성 할 수 있습니다, 첫 번째가 완료 될 때까지
public static Jobs[] JobQueue
{
set
{
try
{
value.AsParallel().ForAll(i => jobqueue.Enqueue(i));
}
catch (Exception e)
{
writeToLog("..\r\n" + e.Message + "\r\n" + e.StackTrace);
}
}
}
public static void ProcessUpdateJobQueue()
{
Action UpdateJob =() =>
{
if (jobqueue.IsEmpty)
return;
Parallel.For(0, jobqueue.Count, new ParallelOptions() { MaxDegreeOfParallelism = 1 },
(j) =>
{
// Do updates here
});
};
if (processUpdateJobThread == null)
{
processUpdateJobThread = new System.Threading.Thread(() =>
{
while (true)
{
UpdateJob();
System.Threading.Thread.Sleep(10000);
}
});
processUpdateJobThread.Start();
}
}
테이블 잠금 장치를 확인 했습니까? 이것이 WCF 문제라고 생각하지 않습니다. –
이것이 WCF 문제가 아닌 것 같습니다. 어떤 방법으로 대량 레코드를 삽입 하시겠습니까? 어떻게 계산 되니? – BrandonZeider
@Gerrie Schenck : 데이터베이스 테이블의 잠금을 수동으로 해제합니다. – Anvesh