2012-07-08 35 views
5

bağlanma:Aşağıdaki kodu kullanarak bir MySQL veritabanına bağlanırken Veritabanı 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; 
} 

Benim şüphe: Benim uygulama küçük veritabanları ile etkileşim süre kadar gayet iyi. Ancak bu uygulamayı, DB boyutunun GB'lerin 100'lerinde olabileceği, canlı bir ortama taşıdığımda, bu kod hangi performans sorunlarına neden olabilir. Etkili Ben çizgisinde, is soruyorum neyi -

@row= $sqlQuery->fetchrow_array(); 

Will Perl tüm tablo içeriğini kopyalamak ve değişken atacak kadar. Evet ise, başvurumun yanı sıra veritabanı sunucusu için önemli performans sorunlarına neden olmaz mı? doğrultusunda

cevap

3

: büyük veritabanı ile etkileşim Eğer bir değişkene sorgunun tüm sonuç kümesini dökümü etmezse

@row= $sqlQuery->fetchrow_array(); 

Bir satır ata süresi, Perl programının veritabanı tarafından iade edilecektir. Benim endişe cevap Öte yandan

$arrRef = $sqlQuery->fetchall_arrayref(); 

..

+0

Teşekkür – Amey

İlgili konular