PHP: Wie werden Abfrageergebnisse in mysqli_result gespeichert?

Wenn ich eine Abfrage an die Datenbank gestellt und die Ergebnisse in mysqli_result abgerufen habe, ist die Speichernutzung extrem gering. Wenn ich jedoch alle Zeilen in der Abfrage abrufe, entsteht ein assoziatives Array, und die Speichernutzung ist extrem hoch.

<?php
    require_once("../config.php"); //db connection config
    $db = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DBASE);

    $query ="select * from table_name";
    if($r = $db->query($query)){
    echo "MEMORY USAGE before :  ". memory_get_usage()."<br><br>";
    $rows = array();
    while($row = $r->fetch_assoc()){

        $rows[]= $row;
    }
    echo "MEMORY USAGE after :  ". memory_get_usage()."<br><br>";


    //before: 660880
    //after:  114655768
    // # of records: around 30 thousands
?>

Es macht für mich Sinn, dass das Speichern dieser vielen Ergebnisse sehr speicherintensiv ist, aber ich frage mich nur, warum mysqli_result so klein ist. Es kann nicht sein, dass die Ergebnisse bei jedem Aufruf von fetch_assoc an die Datenbank gesendet werden. Wo werden dann die Ergebnisse gespeichert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage