> PHP 프레임워크 > YII > yii2 배치와 각각의 차이점은 무엇입니까

yii2 배치와 각각의 차이점은 무엇입니까

爱喝马黛茶的安东尼
풀어 주다: 2019-12-09 10:58:58
원래의
3980명이 탐색했습니다.

yii2 배치와 각각의 차이점은 무엇입니까

우리 데이터베이스는 종종 매우 크고 쿼리 결과 집합도 매우 커서 메모리를 낭비합니다. 메모리 사용량을 줄이기 위해 yii2의 배치 및 각 방법을 사용할 수 있습니다.

모든 사람이 더 명확하게 이해할 수 있도록 시나리오를 시뮬레이션한 다음 yii2의 디버그를 사용하여 all 및 배치/각 방법에서 메모리 사용량을 확인합니다.

준비 시작

먼저 테이블을 만들어 보겠습니다. 매우 간단합니다.

yii2 배치와 각각의 차이점은 무엇입니까

여기에는 기본 키 ID, 회원 이름 사용자 이름 및 지역이 비어 있습니다.

그런 다음 루프를 실행했습니다.

set_time_limit(0);
for($i=1;$i<=10000;$i++){
    Yii::$app->db->createCommand()->insert("user",[
        &#39;username&#39;=>&#39;abei&#39;.$i,
        &#39;province&#39;=>&#39;北京市&#39;
    ])->execute();
}
로그인 후 복사

실행 후 데이터베이스에 10,000개의 레코드가 있다는 것을 알고 이제 비교를 시작합니다.

비교

편의상 루프 본문을 뷰에 직접 작성했는데, 다음 코드와 같이 보시면 확실히 이해하실 수 있습니다.

$query = new \yii\db\Query();
$query->from(&#39;user&#39;);
foreach($query->all() as $user){
    echo $user[&#39;username&#39;];
    echo "<br/>";
}
로그인 후 복사

결과는?

yii2 배치와 각각의 차이점은 무엇입니까

메모리 점유 15.306MB

자, 이제 배치와 각 트릭이 메모리를 절약하는지 살펴보겠습니다.

$query = new \yii\db\Query();
$query->from(&#39;user&#39;);
foreach($query->batch() as $users){
        foreach($users as $user){
        echo $user[&#39;username&#39;];
        echo "<br/>";
    }
}
로그인 후 복사

결과는?

yii2 배치와 각각의 차이점은 무엇입니까

물론, 메모리의 절반이 저장됩니다. 이제 8.077MB만 차지합니다

마찬가지로

$query = new \yii\db\Query();
$query->from(&#39;user&#39;);
foreach($query->each() as $user){
    echo $user[&#39;username&#39;];
    echo "<br/>";
}
로그인 후 복사

각각의 성능도 상당히 좋습니다

yii2 배치와 각각의 차이점은 무엇입니까

Result

한 번에 전체 또는 대규모 배치의 데이터를 읽어야 할 때 다음을 고려할 수 있습니다. 배치와 각각을 사용하면 이 작은 코드 최적화를 통해 메모리의 절반을 절약할 수 있습니다.

PHP 중국어 웹사이트에는 무료 Yii 입문 튜토리얼이 많이 있습니다. 누구나 배울 수 있습니다!

위 내용은 yii2 배치와 각각의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿