가능한 경우 데이터베이스 프로 시저 내에서 이렇게하는 것이 좋습니다. 그렇지 않으면 클라이언트 측 처리가 얼마나 효율적인지는 중요하지 않지만 네트워크를 통해 데이터를 앞뒤로 마샬링함으로써 시간이 지배적 일 수 있습니다. 동일한 머신에서 프로세스를 실행하더라도, (아마도 ODBC) 드라이버를 통해 모든 것을 직렬화해야하는 불이익이 발생할 수 있습니다. 물론 데이터베이스 서버의 주소 공간 (서버가 지원하는 경우) 내에서 실행할 수있는 원시 프로 시저를 작성하지 않는 한.
레코드를 선택하기위한 상한 및 하한을 취한 프로 시저를 작성한 다음 몇 개의 스레드를 포크하고 스레드 당 DB 연결을 할당하는 클라이언트 측 프로그램을 작성한 다음 서버 측 호출을 호출하는 것이 좋습니다. 적절한 크기의 경계 (말하자면 4 백만 행을 갖는 5 개의 쓰레드)를 가진 측 절차. DB 서버가 멀티 스레드라면, 이것은 당신에게 훌륭한 성능을 제공 할 것입니다.
그러나 다중 스레드 접근 방식을 사용하면 많은 행을 업데이트하는 경우 트랜잭션을 충분히 자주 수행하지 않으면 잠금 에스컬레이션 때문에 잠금 문제가 발생할 수 있습니다.
출처
2010-01-25 17:31:37
TMN
어떤 종류의 계산을 말하고 있습니까? 곱셈, 무작위 걸음, 검색, 정렬 등을 말하고 있습니까? 또한 5 가지 계산을 원자 단위로 수행합니까? 아니면 이전 연산의 결과에 의존합니까? – hackerhasid
그들은 거의 기본적인 곱셈 등이며, 원자 적입니다. – alchemical
각 행 작업은 어쨌든 현재 행에 의해 영향을받는 다음 행입니까? – zebrabox