Можете да използвате функцията fetchall_arrayref, която приема аргумент 'maxrows':
while (my $data = $dbc->fetchall_arrayref(undef, 10000)) {
for my $row( @{$data} ) {
$report->process_record($row);
}
}
Можете също да разгледате RowCacheSize свойство, което се опитва да контролира колко записа се връщат при извличане от вашия драйвер.