많은 쿼리를 배치 쿼리로 다시 작성했습니다. 이제 더 이상 DB 호출이 foreach 루프 안에 없습니다!느린 배치를 최적화하는 방법 MySQL에서 INSERT IGNORE
이러한 새로운 일괄 처리 쿼리 중 하나가 피벗 테이블에 무시됩니다. 매번 1-4 초가 걸립니다. 상당히 크고 (호출 당 100 행) 테이블의 행 수가 2 백만을 초과합니다.
내 프로그램의 현재 병목 현상입니다. 나는 테이블을 잠그는 것과 같은 것을 고려해야 하는가? (결코 전에 해본 적이 없지만, 나는 그것이 위험하다고 들었다.) 또는 내가 먼저 살펴 봐야 할 다른 옵션이 있는가?
피벗 테이블이므로 업데이트 할 두 행으로 구성된 고유 키가 있습니다.
잘 호출은 multi_curl 콜백 함수의 일부이므로 한 인스턴스가 다른 인스턴스가 테이블에 쓰는 동시에 테이블에서 읽으려고 시도 할 수도 있습니다. 테이블 잠금, 인덱스 삭제, 삽입, 인덱스 추가, 테이블 잠금 해제와 같은 것을 생각하고있었습니다. 그러나, 당신이 말한대로, 색인 생성에는 시간이 걸립니다. – jisaacstone