[前][次][番号順一覧][スレッド一覧]

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@]