2012-07-08 15 views
5

Estoy conectando a una base de datos MySQL usando el siguiente código:conectarse a la base de 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; 
} 

Mi duda es: Es bien hasta el momento en mi solicitud está interactuando con pequeñas DB. Pero cuando muevo esta aplicación a un entorno en vivo donde el tamaño de la base de datos puede estar en cientos de GB, ¿qué problemas de rendimiento puede causar este código? Efectivamente lo que estoy pidiendo es decir, en la línea -

@row= $sqlQuery->fetchrow_array(); 

Will Perl copiar todo el contenido de la tabla y lo descarga en la variable. En caso afirmativo, ¿no causará problemas de rendimiento significativos para mi aplicación y para el servidor de la base de datos?

Respuesta

3

En la línea:

@row= $sqlQuery->fetchrow_array(); 

Una fila de tiempo ATA será devuelto por la base de datos de Perl, si interactuar con una base de datos masiva que no volcará todo el conjunto de resultados de la consulta a una variable.

$arrRef = $sqlQuery->fetchall_arrayref(); 

Por otro lado ..

+0

Gracias que respondieron a mi preocupación – Amey

Cuestiones relacionadas