2012-07-08 23 views
5

Sto collegando a un database MySQL utilizzando il seguente codice:la connessione al database Perl

my $dbh = DBI->connect("DBI:mysql:test:localhost", $user, $pass) 
    or die $DBI::errstr; 
my $sqlQuery = $dbh->prepare($query) 
    or die "Can't prepare $query: $dbh->errstr\n"; 
my $rv = $sqlQuery->execute 
    or die "can't execute the query: $sqlQuery->errstr"; 

while (my @row= $sqlQuery->fetchrow_array()) { 
    # do something; 
} 

mio dubbio è: E 'bene fino al momento la mia applicazione interagisce con piccoli DB. Ma quando sposto questa applicazione in un ambiente live in cui la dimensione del DB può essere in 100s di GB, quali problemi di prestazioni possono causare questo codice. In effetti quello che sto chiedendo è, in prima linea -

@row= $sqlQuery->fetchrow_array(); 

Will Perl copiare l'intero contenuto della tabella e dump nella variabile. Se sì, non causerà problemi di prestazioni significativi per la mia applicazione e il server del database?

risposta

3

Nella linea:

@row= $sqlQuery->fetchrow_array(); 

Una riga tempo ata verrà restituito dal database per Perl, se l'interazione con un database enorme che non scaricherà l'intero set di risultati della query a una variabile.

$arrRef = $sqlQuery->fetchall_arrayref(); 

D'altra parte ..

+0

Grazie che hanno risposto la mia preoccupazione – Amey

Problemi correlati