2012-12-28 2 views
1

데이터베이스에서 (img_name과 같이) 필드를 업데이트하는 하나의 레이크 태스크가 있습니다. 내 데이터베이스에는 75,000 개가 넘는 레코드가 있습니다. 내가 갈퀴 작업을 실행하면 갈퀴 작업을 완료하는 데 1 시간 이상이 소요됩니다. 10,000 레코드마다 갈퀴 작업을 실행하고 싶습니다. 처음으로 10,000 건, 두 번째 건 다음 10,000 건 등을 의미합니다. 어느 누구도 나를 도울 수 있습니까? 미리 감사드립니다.더 긴 데이터에 대해 rake 태스크를 실행하십시오.

답변

1

사용중인 백그라운드 작업 보석이 있습니까 (예 : delayed_job)? 그렇다면 작업을 수행하기 위해 많은 수의 백그라운드 작업을 만드는 레이크 작업이 필요할 것입니다.

당신은 당신을 반복하는 배열이있는 경우, 당신은 그것을 좋아 할 수있는 :

items.in_groups_of(10000, false) do |batch| 
    # create background job for this batch 
end 

를이 콜렉션의 경우에, 당신은 같은 것을 사용할 수 있습니다

@items.find_in_batches(batch_size: 10000) do |batch| 
    # create background job for this batch 
end 
+0

감사합니다 조엘! –

관련 문제