2012-07-08 48 views
5

Tôi đang kết nối với một cơ sở dữ liệu mysql sử dụng đoạn mã sau:Đang kết nối đến cơ sở dữ liệu 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; 
} 

nghi ngờ của tôi là: Nó là tốt cho đến khi thời gian ứng dụng của tôi đang tương tác với DBS nhỏ. Nhưng khi tôi di chuyển ứng dụng này sang môi trường sống nơi kích thước DB có thể ở mức 100 GB, vấn đề hiệu suất nào có thể gây ra mã này. Hiệu quả những gì tôi yêu cầu là, tại dòng -

@row= $sqlQuery->fetchrow_array(); 

Perl sẽ sao chép toàn bộ nội dung của bảng và biến nó vào biến. Nếu có, nó sẽ không gây ra vấn đề hiệu suất đáng kể cho ứng dụng của tôi cũng như máy chủ cơ sở dữ liệu?

Trả lời

3

Trong dòng:

@row= $sqlQuery->fetchrow_array(); 

Một dòng thời gian ata sẽ được trả lại bởi cơ sở dữ liệu để perl, nếu tương tác với một cơ sở dữ liệu khổng lồ bạn sẽ không đổ toàn bộ tập kết quả của truy vấn cho một biến.

$arrRef = $sqlQuery->fetchall_arrayref(); 

Mặt khác ..

+0

Nhờ đó đã trả lời mối quan tâm của tôi – Amey

Các vấn đề liên quan