Mysql
 sql >> Base de données >  >> RDS >> Mysql

Consommation de mémoire PDO/MySQL avec un grand ensemble de résultats

Après avoir créé la connexion, vous devez définir PDO::MYSQL_ATTR_USE_BUFFERED_QUERY à faux :

<?php
$pdo = new PDO('mysql:host=127.0.0.1', 'foo', 'bar', array(
    PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,
));
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

// snip

var_dump(memory_get_usage());
var_dump(memory_get_peak_usage());

Cela affiche :

int(39508)
int(653920)
int(668136)

Quelle que soit la taille du résultat, l'utilisation de la mémoire reste à peu près statique.