찾다

 >  Q&A  >  본문

Mysql - PHP는 100,000개의 콘텐츠를 일괄적으로 삽입하므로 메모리가 128MB로 급증합니다. 어떻게 처리해야 할까요?

기록을 일괄 생성하여 한 번에 100,000개의 콘텐츠를 생성하는 비즈니스 설계가 있기 때문에(대부분의 콘텐츠가 동일하고 일부 필드는 임의의 코드를 생성해야 함) 어떻게 해야 합니까?

PHPzPHPz2731일 전922

모든 응답(3)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-06-05 11:09:07

    비동기식과 루핑을 사용한다고 하시는 분들은 개인적으로 무리라고 생각합니다.
    100,000개의 데이터로 인해 메모리가 충분히 크다고 해도 데이터베이스에 데이터를 저장하는 데 시간이 많이 걸립니다(IO 흐름). , 트랜잭션 제출이 제대로 처리되지 않더라도 데이터베이스가 메모리를 차지하게 됩니다.

    가장 빠른 방법은 데이터베이스에서 직접 데이터를 생성하는 것입니다.
    ID 테이블을 직접 생성하고(ID의 한 필드만 저장됨) 100,000개의 항목(0-10w)을 기록합니다.
    Mysql 방법:

    으아아아

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-06-05 11:09:07

    정말 일괄 처리하고 싶지 않습니다. ini_set(''memory_limit', '256M');? 아니면 서버 메모리가 부족하지 않다면 512M으로 설정하세요

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-06-05 11:09:07

    1. 생성된 데이터가 체인 구조로 저장되어 있는 경우 데이터 구조를 최적화하는 것이 좋습니다. 대부분의 데이터가 동일한 경우 키 값을 사용하여 동일한 데이터를 저장한 후 하위를 사용할 수 있습니다. 서로 다른 데이터를 저장하기 위한 키 값(예: 차이점을 유지하면서 공통점 찾기)
    예:
    array (0=>array('data'=>array('name'=>'t','age') =>'14),'key'=>array('1','2' ,'3','4')));
    foreach($array as $val) {

    으아아아

    }

    2. 한 번에 10개의 데이터를 저장하면 MySQL 서버에 더 많은 부담이 가해집니다.
    테이블 값에 삽입('t','a',1),(')과 같은 삽입 코드를 최적화하는 것이 좋습니다. t','a',2)

    3. 거래 개시 및 데이터를 정량적으로 제출하는 것이 좋습니다

    회신하다
    0
  • 취소회신하다