우리는 전자 상거래 시스템이 있으며 인벤토리 시스템이 별도입니다. 우리는 PHP와 MySQL을 사용합니다. 전자 상거래 서버에 인벤토리 세부 정보가 필요합니다. 1 시간마다 약 7500 개의 레코드를 서버에 푸시해야합니다. Google은 인벤토리를 추가하는 전자 상거래 시스템에서 API를 만들었습니다. 그러나 두 서버가 서로 다른 위치에 있으므로 시간이 많이 걸립니다. 이 인벤토리를 서버로 푸시 할 수있는 더 빠른 방법이 있습니까? 즉 서버의 특정 테이블에 레코드를 추가하고 2 개의 컬럼 만 추가합니다.서버에 엄청난 수의 레코드 추가
답변
은, rsync를, LOAD 데이터 INFILE 같은 MySQL의 측면에 대한 옵션의 많은 수 (토마스 말한대로) 더 빨리해야 Prepared Statements 사용할 수있는 PHP 측 등
을 여러 행을 삽입해야합니다. 여기에서는 params 만 바인드하고 루프로 실행합니다. 쿼리 정의가 루프 측면에 있지 않습니다. 하지만 여전히 MySQL 솔루션이 더 효과적이어야합니다.
병목 현상이 어디에 있는지 알려줄 수 있습니까? 귀하의 API는 데이터베이스에 의해 유지되고 있습니까? 한 번의 통화로 얼마나 많은 항목을 API로 보냅니 까?
단일 호출에서 단 하나의 레코드 만 푸시되었습니다. – Hacker
테이블의 행당 하나의 API 요청을 수행하고 있습니다. 이로 인해의 오버 헤드가 에 많이 발생합니다.
대신, 7.500+ 행 (좋지 않지만 여전히 1/1보다 낫다) 또는 n
레코드의 여러 요청 중 큰 요청을하십시오. 성능에 따라 n
을 조정하십시오.
편집
당신이 당신의 전자 상거래 솔루션이라는 결코 때문에, 나는 당신이 API와 수리를 할 수 집에와 있어요 있으리라 믿고있어. 이것이 사실이 아니라면 알려주십시오.
MySQL에서는 단일 테이블에 많은 양의 데이터를 추가하면 복수 ROWS
에 대해 하나의 INSERT
을 수행 할 수 있습니다. 그렇게 훨씬 빠릅니다.
INSERT INTO inventory VALUES (2, 'Lamp'), (1, 'Bike'), (8, 'TV');
당신은 MySQL documentation에 대한 INSERT
최적화 문서를 찾을 수 있습니다.
설명서에는 고려해야 할 다른 솔루션이 나와 있습니다.
@ Thomas Potaire - 문제는 서버가 다른 위치에 있고 데이터베이스를 직접 만질 수 없다는 것입니다. – Hacker
나는 타사 솔루션을 사용하여 DB에 데이터를 주입하고 있습니까? 여러 행이있는 단일 삽입을 허용하는 API 호출을 제공하도록 요청할 수 있습니까? DB에 대한 액세스 권한이 없다면 정말 힘들 것입니다 .. –
- 1. SSIS를 사용하여 엄청난 수의 레코드 선택
- 2. 엄청난 수의 레코드 업데이트 - 성능 최적화
- 3. 엄청난 수의 XML 편집
- 4. 갑자기 엄청난 수의 인스턴스
- 5. 엄청난 수의 파일을 청크로 다운로드
- 6. Solr에 엄청난 수의 파일 추가하기
- 7. 엄청난 수의 조합에 대한 몽고 (mongodb) '레이아웃'
- 8. pytables를 사용하여 엄청난 수의 배열을 구축하십시오.
- 9. 외부 HD의 루트에있는 엄청난 수의 파일 삭제
- 10. Magento - 엄청난 수의 db 쿼리 x 페이지
- 11. 엄청난 수의 레코드가있는 테이블에서 그룹을 최적화하는 방법
- 12. 엄청난 수의 점에 대한 가장 가까운 쌍
- 13. 엄청난 수의 태그를 하나의 핫 인코딩
- 14. 엄청난 양의 데이터를 MySQL 서버에 업로드
- 15. 서버에 엄청난 양의 이미지를 저장하기위한 제안 [PHP]
- 16. 테이블에서 AC# 코드 (Teradata Database)를 사용하여 엄청난 수의 레코드 (300000)를 검색하십시오.
- 17. 레코드 수의 시간 순서 표시
- 18. 휴식 서비스에서 많은 수의 레코드 보내기
- 19. 서브 쿼리를 기반으로 엄청난 수의 행을 삽입하십시오 ... 문제가 있습니다
- 20. 엄청난 수의 요소가있는 html javascript select 옵션 컨트롤 (예 : 10K)
- 21. BASH : 다른 거대한 목록에 포함되어있는 경우 엄청난 수의 목록 필터링
- 22. 엄청난 수의 레코드에 대한 최상의 성능 검색 쿼리/방법은 무엇입니까
- 23. 엄청난 수의 레코드를 사용하면서 Hibernate를 빠르게 업데이트하는 방법
- 24. ftp 디렉토리 목록 제한 시간. 엄청난 수의 하위 디렉토리
- 25. 엄청난 수의 키로 dict()를 빨리 정렬하는 방법은 무엇입니까?
- 26. 많은 수의 nhibernate에서 많은 수의 nhibernate로 레코드 되 돌리기?
- 27. 특정 필드를 포함하는 레코드 수의 순서로 레코드 선택
- 28. LINQ2SQL을 사용하여 많은 수의 레코드 삽입
- 29. doctrine 1.2 많은 수의 레코드 생성 (~ 5000)
- 30. 많은 수의 센서 데이터 레코드 저장
플랫 파일이 작동합니까? – Leeish
이 가져 오기 API는 정확히 어떻게 작동합니까? 명확히 해 주시겠습니까? –
@Thomas Hambach - API는 테이블에 간단한 삽입물이었습니다. 그래서 우리는 우리가 가지고있는 많은 수의 레코드를 반복해야했습니다. – Hacker