连接到Perl数据库

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

我的疑问是:当我的应用程序与小型数据库交互时,一切都很好。但是当我将此应用程序移动到一个实时环境中,其中数据库的大小可能达到数百GB时,这段代码会造成什么性能问题。实际上,我的问题是,在这一行 -

之后,这段代码可能会引起哪些性能问题。
@row= $sqlQuery->fetchrow_array();

Perl会将整个表格内容复制并转储到变量中吗?如果是的话,这不会对我的应用程序以及数据库服务器造成显著的性能问题吗?
1个回答

3
在这行代码中:
@row= $sqlQuery->fetchrow_array();

数据库将逐行向Perl返回结果,如果涉及大型数据库,您不会将查询的整个结果集转储到变量中。

$arrRef = $sqlQuery->fetchall_arrayref();

另一方面,..

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接