2012-07-08 2 views
5

에 연결 :나는 다음과 같은 코드를 사용하여 MySQL 데이터베이스에 연결하고 데이터베이스 펄

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; 
} 

내 의심의 여지가있다 : 그것은 내 응용 프로그램이 작은 데시벨와 상호 작용하는 시간까지 괜찮습니다. 그러나이 애플리케이션을 DB 크기가 GBs가 될 수있는 실제 환경으로 옮기면이 코드로 인해 어떤 성능 문제가 발생할 수 있습니다. 효과적으로 나는 줄입니다 요구하고있는 무슨 -

@row= $sqlQuery->fetchrow_array(); 

윌 펄은 전체 테이블의 내용을 복사하고 변수로 덤프. 그렇다면 응용 프로그램과 데이터베이스 서버에 중요한 성능 문제가 발생하지 않습니까? 라인에서

답변

3

: 대규모 데이터베이스와 상호 작용하는 것은 당신이 변수에 쿼리의 전체 결과 집합을 덤프하지 않을 경우

@row= $sqlQuery->fetchrow_array(); 

한 행 ATA 시간은 펄 데이터베이스에 의해 반환됩니다. 내 우려를 응답 한 반면에

$arrRef = $sqlQuery->fetchall_arrayref(); 

..

+0

감사합니다 – Amey

관련 문제