2011-08-24 3 views
0

각 배치의 데이터베이스 테이블에 레코드로드 (30,000)를 작성/저장하겠습니다. 프로세스 시간을 줄이기 위해 병렬 처리 프로그램을 사용하는 경우 어떻게 다음 문제를 관리 할 수 ​​있습니까? .net : 대용량 데이터를 SQL 서버와 병렬로 생성/저장

  • DB를 테이블

    내가 참조를 취할 수있는 패턴이 있습니까
  • 예상대로 성능이 실제로 잘되지 않습니다 차단됩니다?

미리 감사드립니다.

답변

0

병렬 처리가 필요합니까? 30000은 이 아니며이 클 수 있습니다. 먼저 SqlBulkCopy 클래스를 살펴 보시기 바랍니다. Using SqlBulkCopy To Perform Efficient Bulk SQL Operations

+0

감사합니다. Simon. 솔직히 말해서 병렬 프로그래밍이 내 시나리오에 도움이되는지 확실하지 않습니다. 내 질문 제목도 충분히 명확하지 않은가 두렵다. 전체 처리는 데이터 저장 이상의 역할을합니다. 사실 약간 복잡한 프로세스를 거치며 그 결과의 일부로 데이터를 생성하여 두 개의 테이블에 저장합니다 – Zalan

0

첫째, 대부분의 데이터베이스 전문가는 30K 레코드를 큰 데이터 세트로 생각하지 않습니다. 성능에 대해 걱정할 필요가 있습니까?

데이터베이스 서버는 사실 여러 요인에 따라 동일한 테이블에 데이터를 삽입/업데이트하는 여러 프로세스를 실제로 처리합니다. 이는 주로 삶의 주된 목적입니다. MS SQL Server, Oracle 또는 MySQL과 같은 DB 서버 제품을 의미한다고 가정합니다.

Simon Mourier가 제안한 BulkCopy는 대용량 데이터 세트를 테이블에 넣는 가장 빠른 방법 일 것입니다.

병렬 처리를 실행해야하는 경우 키는 트랜잭션 관리입니다. 각 스레드가 트랜잭션을 시작하고 오랜 시간 동안 트랜잭션을 커밋하지 않으면 잠금 문제가 발생할 수 있습니다. 데이터베이스의 구현을 읽고 짧은 실행 트랜잭션을 시도하십시오.

관련 문제