2013-06-20 1 views
1

나는 SMS 게이트웨이를 통해 SMS를 보내는 응용 프로그램을 작성 중이며 데이터베이스에 메시지 사본을 보관하고 있습니다. 지금까지 프로토 타입 목적으로 Codeigniter의 Active Record 클래스를 사용하여 각 메시지를 하나씩 데이터베이스에 삽입했지만 대량 메시지를 보내려면 전체 프로세스를 고정하는 데 insert_batch()을 사용합니다. 나는 한 번에 사용자 요청 당 1000-5000, 그리고 어쩌면 더 많은, sms (삽입)에 대해 말하고있다.Codeigniter의 insert_batch() 함수 성능 및 제한 사항은 무엇입니까?

제 질문은 insert_batch()이 충분하고 빠르며 삽입물에 큰 오차가 없습니까? 또는 배치 작업 당 삽입 횟수가 적을 때 사용됩니다. 하나의 INSERT에 여러 행이있는 사용자 정의 mysql 쿼리를 만드는 것이 더 안전합니까? insert_batch()으로 삽입 할 수있는 행의 양에는 제한이 있습니까?

이전에 다른 사람이 삽입물을 많이 사용 했습니까? 그렇다면 귀하의 경험은 무엇입니까?

답변

1

일주 insert_batch() 테스트 및 insert_batch() 약 1.000.000 기록을 처리 한 후 : 내 개인적인 경험 insert_batch에 따라서 Codeigniter's insert_batch() with thousands of inserts has missing records

() 대규모을위한 신뢰할 수 없습니다 10.000 이상의 행 삽입 때때로 db 불일치로 이어질 수있는 모든 것을 삽입하지 않습니다. 성능을 위해 나는 아무 문제도 없었고 나는 지금까지 만족하고 있습니다. CentOS가 설치된 구형 PC (p4 w/1GB RAM)에서 약 100 초에 10.000 행.

+0

insert_batch() 가끔 totaly 실패하고 아무것도하지 반환 아무것도 ... – ddjikic

0

Insert_batch는 데이터베이스에 정보를 삽입하기 위해 1 개의 쿼리를 사용하는 것이 좋습니다.

일련의 문장을 반복하는 것보다 훨씬 좋습니다.

아시다시피 각 문은 connect -> query -> close입니다.

반복적으로 연결하는 것보다 한 번 DB에 연결하는 것이 좋습니다. 다른 SO 질문에 설명 된대로 나는 다음과 같은 문제에 온

+0

물론. 나는 그것을 안다. 그게 내가 insert_batch()를 사용하는 이유입니다. 그러나 실제 질문은 insert_batch가 한 번에 10-50-100 개의 레코드를 처리 할 수는 없지만 5000+와 훨씬 더 비슷하며 성능에서 기대해야 할 것이 있는지 여부입니다. 내 expirience에서 – sotoz

관련 문제