2016-08-04 2 views
0

나는 다음 스키마와 테이블이 : http://i.imgur.com/jn2nrFT.pngMySQL의 테이블 삽입 성능

그 MySQL은, InnoDB의 실행, 기본 디지털 오션 호스트 (512MB, CPU)에. 표는 5000 개 행이있을 때 나는 PHP/교리를 사용하고, 내 코드에서, 나는

for($i = 0; $i < 5000; ++$i) { 
    $row = findRowInTable(); 
    if (! $row) { 
     insertNewRow(); 
    } 
} 
$em->flush(); 

테이블이 비어 때, 그것은 20 대처럼 뭔가를 느리게한다처럼 뭔가를하고 50 년대.

어떻게 최적화 할 수 있습니까? 최대 5K 행을 추가 할 예정이지만 테이블이 200K 행이더라도 120 초 미만이 프로세스를 가져와야합니다.

+2

성능을 원하면 doctrine을 사용하지 마십시오. –

+0

더 큰 보트가 필요합니다. –

+1

그리고 더 많은 숫양을 얻으십시오. 또 다른 cpu'd도 좋을 것이다. 또한, 같은 루프에서 db 연결을 열거 나 닫지 않을지, 그리고/또는 db 관련 항목으로 질의를하는지 알 수 없습니다. –

답변

0

루프 외부에서 데이터베이스에없는 행을 찾으려고 시도 할 수 있습니다. 하나의 쿼리로 행을 찾아서 PHP가 반복하도록하십시오.

$rowsARR = findRowsNotInTable(); 
for($i = 0; $i < sizeof($rowsARR); ++$i) { 
     insertTheRow($rowsARR[i]); 
} 
$em->flush();