mysql:688
From: "Satoshi Tatsuoka" <"Satoshi Tatsuoka" <satoshi@xxxxxxxxxx>>
Date: Sat, 13 Feb 1999 19:21:09 +0900
Subject: [mysql 00688] RE: プレースホルダーを使った execute で Out of memory
立岡です。 >はじめまして。奥田と申します。 こんにちは。 >現在、PerlのDBIインタフェースを使用して、典型的なパターンのテストをし >ております。そこで、プレースホルダーを使ったSelect〜executeを8000回近く >繰り返すと、Out of memory なるエラーでPerlスクリプトが挫折してしまう、 >という現象に出くわしました。 > >テストしたスクリプトと、テーブル定義は、以下のとおりです。 > $state = "SELECT USRYAK from USER where USUSER = ?"; > $USERh = $dbh->prepare($state) || die $dbh->errstr; > > for ($i = 0; $i <= 900000; $i++) { > $USERCD = sprintf("%08.8d", $i); > $USERh->execute('00003810') || die $USERh->errstr, "i=$i"; >#1 $USERh->execute($USERCD) || die $USERh->errstr, "i=$i"; > $USERh->bind_col(1, \$USRYAK); > while($USERh->fetchrow_arrayref()) { > print "USERCD=($USERCD) USRYAK=($USRYAK)\n"; > } > } DBIは良く知らないのですが、結果が開放されていないのではないかと思います。 free_resultのようなコマンドがwhile文の終了後に必要だと思います。 DBIだと $USERh->finish とかそんな感じじゃないかとおもいます。(推測) でもprepareしたものまで忘れなければいいのですが... Satoshi Tatsuoka satoshi@xxxxxxxxxx
-> 688 1999-02-13 19:21 ["Satoshi Tatsuoka" <] RE: プレースホルダーを使った execute で Out of memory 690 1999-02-13 20:34 ┗[奥田 典子 <okud_no@]