Heim  >  Artikel  >  PHP-Framework  >  Was ist der Unterschied zwischen yii2 Batch und Each

Was ist der Unterschied zwischen yii2 Batch und Each

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-12-09 10:58:583906Durchsuche

Was ist der Unterschied zwischen yii2 Batch und Each

Unsere Datenbank ist oft sehr groß und die Ergebnismenge einer Abfrage ist ebenfalls sehr groß, was Speicher verschwendet. Um die Speichernutzung zu reduzieren, können wir den Batch und jede Methode von yii2 verwenden .

Um es klarer zu machen, simulieren wir ein Szenario und verwenden dann das Debug von yii2, um die Speichernutzung unter den Methoden „all“ und „batch/each“ anzuzeigen.

Vorbereitung beginnen

Erstellen wir zunächst eine Tabelle, das ist ganz einfach.

Was ist der Unterschied zwischen yii2 Batch und Each

Sie sehen, es enthält die Primärschlüssel-ID, den Mitgliedsnamen, den Benutzernamen und die Provinz. Jetzt ist es leer.

Dann haben wir eine Schleife ausgeführt

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();
}

Nach der Ausführung wissen Sie, dass unsere Datenbank 10.000 Datensätze enthält, und jetzt beginnen wir mit dem Vergleich.

Vergleich

Der Einfachheit halber schreiben wir den Schleifenkörper direkt in die Ansicht, wie zum Beispiel den folgenden Code, Sie können ihn auf jeden Fall verstehen.

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

Das Ergebnis?

Was ist der Unterschied zwischen yii2 Batch und Each

Belegt 15,306 MB Speicher

OK, jetzt wollen wir sehen, ob die Tricks von Batch und jedem Speicher sparen.

$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/>";
    }
}

Das Ergebnis?

Was ist der Unterschied zwischen yii2 Batch und Each

Tatsächlich wird die Hälfte des Speichers gespeichert. Jetzt nimmt es nur noch 8.077 MB ein

Das Gleiche

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

jede Aufführung ist auch recht gut

Was ist der Unterschied zwischen yii2 Batch und Each

Ergebnis

Wenn wir alle oder einen großen Datenstapel auf einmal lesen müssen, können wir die Verwendung von Batch und Each in Betracht ziehen. Mit dieser kleinen Codeoptimierung können Sie die Hälfte des Speichers einsparen.

PHP-Website für Chinesisch, es gibt viele kostenlose Yii-Einführungs-Tutorials, jeder ist willkommen, es zu lernen!

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen yii2 Batch und Each. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Kann yii SQL ausführen?Nächster Artikel:Kann yii SQL ausführen?