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

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

PHPz
PHPz

学习是最好的投资!

모든 응답(3)
左手右手慢动作

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

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

으아아아
Peter_Zhu

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

Peter_Zhu

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. 거래 개시 및 데이터를 정량적으로 제출하는 것이 좋습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿