PHP :как результаты запроса сохраняются в mysqli _результат

Когда я сделал запрос к базе данных и получил результаты в результате mysqli _, использование памяти было чрезвычайно небольшим. Однако, когда я извлекаю все строки результатов запроса в ассоциативный массив, использование памяти становится чрезвычайно высоким.

<?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
?>

Мне кажется логичным, что хранение такого большого количества результатов занимает очень много памяти, но мне просто интересно, почему результат mysqli _такой маленький. Не может быть, чтобы результаты запрашивались в базе данных каждый раз, когда вызывается fetch _assoc. Так где же тогда хранятся результаты в памяти.

8
задан Gabriel Santos 29 July 2012 в 03:24
поделиться