2012-07-08 86 views
5

連接到我使用下面的代碼連接到MySQL數據庫的數據庫的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; 
} 

我的疑問是:這是罰款,直到我的應用程序與小數據塊進行交互的時間。但是,當我將此應用程序移至數據庫大小可能達到100s GB的實時環境時,此代碼可能會導致哪些性能問題。實際上我所要求的是,在線 -

@row= $sqlQuery->fetchrow_array(); 

Perl會複製整個表內容並將其轉儲到變量。如果是的話,它不會對我的應用程序和數據庫服務器造成重大的性能問題嗎?

回答

3

在行:

@row= $sqlQuery->fetchrow_array(); 

一行ATA時間將數據庫恢復到Perl中,如果有一個龐大的數據庫進行交互,你不會傾倒整個結果集的查詢變量的。

$arrRef = $sqlQuery->fetchall_arrayref(); 

在另一方面..

+0

感謝那些回答我的關注 – Amey 2012-07-08 12:15:51