java - for循环效率问题
巴扎黑
巴扎黑 2017-04-17 17:50:58
0
4
490

for循环,大概需要遍历100万的数据,对于每一条数据,需要更新5张表,调用两次API接口,但是在执行过程中,因为数据量太大,所以执行的中间,由于耗时严重,经常会出现链接中断等问题,如果把这种遍历100万数据的逻辑,搞成多线程,应该怎么搞啊?

巴扎黑
巴扎黑

모든 응답(4)
黄舟

스레드 풀이나 분산 처리를 사용하면 특정 데이터가 처리되면 어딘가에 표시하고 실시간으로 쓸 수 있으며, 처음부터 다시 시작하여 완료된 데이터를 필터링할 수 있습니다.

시간 초과를 설정한 다음 실패한 기록을 별도로 저장하고 전략을 사용하여 다시 시도할 수도 있습니다.

PHPzhong

말씀을 들어보니 이 1백만 개의 데이터를 한 번에 처리하고 싶다면 이 프로그램을 오랫동안 사용하는 대신 간단하고 무례하게 프로세스를 몇 개 더 열고 몇 가지 매개변수를 전달하면 됩니다. 10개의 프로세스가 열려 있고 각 프로세스가 100,000개의 데이터를 담당하며 각 프로세스가 담당하는 데이터는 특정 규칙에 따라 구별될 수 있다고 가정합니다. 예를 들어 ID 간격

大家讲道理

100만 개의 데이터를 여러 부분으로 나누어 각 스레드가 하나의 데이터를 처리하며, 데이터를 일괄적으로 삽입해야 합니다. 데이터베이스에 인덱스가 있는 경우 모든 데이터를 삽입한 후 먼저 끄는 것이 가장 좋습니다. , 인덱스가 통합됩니다. Oracle인 경우 Hibernate 등을 사용하지 않고 SQL Loader 또는 기타 유사한 도구를 사용하여 직접 삽입할 수 있습니다.

刘奇

스레드 풀을 사용하여 각 스레드의 데이터 시작점을 기록한 다음 데이터 읽기를 시작합니다. 일괄 업데이트를 사용하여 테이블을 업데이트하는 것이 좋습니다. API 인터페이스는 호출하는 동안 테이블이 업데이트됩니다. . 이 절차가 더 복잡하다고 생각된다면. API 인터페이스에서 호출되는 데이터베이스의 업데이트 테이블을 이용하여 순차적으로 실행됩니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿