Vous pouvez utiliser la fonction fetchall_arrayref qui accepte un argument 'maxrows' :
while (my $data = $dbc->fetchall_arrayref(undef, 10000)) {
for my $row( @{$data} ) {
$report->process_record($row);
}
}
Vous pouvez également consulter RowCacheSize propriété qui tente de contrôler le nombre d'enregistrements renvoyés lors d'une extraction depuis votre pilote.