우리 데이터베이스는 종종 매우 크고 쿼리 결과 집합도 매우 커서 메모리를 낭비합니다. 메모리 사용량을 줄이기 위해 yii2의 배치 및 각 방법을 사용할 수 있습니다.
모든 사람이 더 명확하게 이해할 수 있도록 시나리오를 시뮬레이션한 다음 yii2의 디버그를 사용하여 all 및 배치/각 방법에서 메모리 사용량을 확인합니다.
준비 시작
먼저 테이블을 만들어 보겠습니다. 매우 간단합니다.
여기에는 기본 키 ID, 회원 이름 사용자 이름 및 지역이 비어 있습니다.
그런 다음 루프를 실행했습니다.
set_time_limit(0); for($i=1;$i<=10000;$i++){ Yii::$app->db->createCommand()->insert("user",[ 'username'=>'abei'.$i, 'province'=>'北京市' ])->execute(); }
실행 후 데이터베이스에 10,000개의 레코드가 있다는 것을 알고 이제 비교를 시작합니다.
비교
편의상 루프 본문을 뷰에 직접 작성했는데, 다음 코드와 같이 보시면 확실히 이해하실 수 있습니다.
$query = new \yii\db\Query(); $query->from('user'); foreach($query->all() as $user){ echo $user['username']; echo "<br/>"; }
결과는?
메모리 점유 15.306MB
자, 이제 배치와 각 트릭이 메모리를 절약하는지 살펴보겠습니다.
$query = new \yii\db\Query(); $query->from('user'); foreach($query->batch() as $users){ foreach($users as $user){ echo $user['username']; echo "<br/>"; } }
결과는?
물론, 메모리의 절반이 저장됩니다. 이제 8.077MB만 차지합니다
마찬가지로
$query = new \yii\db\Query(); $query->from('user'); foreach($query->each() as $user){ echo $user['username']; echo "<br/>"; }
각각의 성능도 상당히 좋습니다
Result
한 번에 전체 또는 대규모 배치의 데이터를 읽어야 할 때 다음을 고려할 수 있습니다. 배치와 각각을 사용하면 이 작은 코드 최적화를 통해 메모리의 절반을 절약할 수 있습니다.
PHP 중국어 웹사이트에는 무료 Yii 입문 튜토리얼이 많이 있습니다. 누구나 배울 수 있습니다!
위 내용은 yii2 배치와 각각의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!