postmaster disconnects after heavy load inserts from plperlu -> waht to do?

Поиск
Список
Период
Сортировка
От Christian Maier
Тема postmaster disconnects after heavy load inserts from plperlu -> waht to do?
Дата
Msg-id 1168888264.200333.166440@38g2000cwa.googlegroups.com
обсуждение исходный текст
Ответы Re: postmaster disconnects after heavy load inserts from plperlu -> waht to do?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Hello!

I have written a function to load yahoo quote data. abut after parsing
the inserts will overload the server and disconnects. What sould I do
to avound this?

THX
Christian Maier

PS Here the function:

CREATE OR REPLACE FUNCTION get_yahoo(VARCHAR(20), BIGINT, VARCHAR(3))
RETURNS INTEGER AS $$
   use LWP::Simple;
   use Date::Simple(':all');

   my $symbol     = $_[0];
   my $market_id  = $_[1];
   my $symbol_whg = $_[2];
   my $market_id_whg = $market_id;

   my $fi = spi_exec_query( qq { SELECT fi_id
                                        FROM fi.provider
                                       WHERE symbol = '$symbol'
                                         AND provider = 'yahoo'
                                         AND sysstatus = 0;
                                });
   my $fi_id = $fi->{rows}[0]->{fi_id};
   my $fi = spi_exec_query( qq { SELECT fi_id
                                        FROM fi.provider
                                       WHERE symbol = '$symbol_whg'
                                         AND provider = 'iso'
                                         AND sysstatus = 0;
                               });
   my $fi_id_whg = $fi->{rows}[0]->{fi_id};

   my $query = qq { SELECT max(eod_day) as lastdate
                      FROM fi.eod
                     WHERE fi_id     = $fi_id
                       AND market_id = $market_id
                       AND fi_id_whg = $fi_id_whg;
                  };

   elog(NOTICE, "$query");
   my $lastdate = spi_exec_query($query);

   my $from;
   ($from = Date::Simple->new($lastdate->{rows}[0]->{lastdate}) ) ||
            ($from = Date::Simple->new('1990-01-01') );
   my $to = today();
   my $fday = $from->day;
   my $fmon = sprintf("%02d", $from->month -1);
   my $fyea = $from->year;
   my $tday = $to->day;
   my $tmon = sprintf("%02d", $to->month -1);
   my $tyea = $to->year;

   elog(NOTICE, "$fyea-$fmon-$fday - $tyea-$tmon-$tday");

   my $content =

get("http://ichart.finance.yahoo.com/table.csv?s=$symbol&a=$fmon&b=$fday&c=$fyea&d=$tmon&e=$tday&f=$tyea&g=d&ignore=.csv");
   elog(NOTICE, "$content");
   my @lines;
   if ($contend =~ m/\\r\\n/) {
      elog(NOTICE, "Windows");
      @lines = split ("\r\n", $content);
   } else {
      elog(NOTICE, "Unix");
      @lines = split ("\n", $content);
   }

   foreach my $line(@lines) {
      my @columns = split(/,/, $line);
      #Date,Open,High,Low,Close,Volume,Adj. Close*
      #12-Jan-07,30.10,31.17,30.05,30.79,9466200,30.79
      if ($columns[0] != "Date") {
         $columns[0] =~ s/Jan/01/;
         $columns[0] =~ s/Feb/02/;
         $columns[0] =~ s/Mar/03/;
         $columns[0] =~ s/Apr/04/;
         $columns[0] =~ s/May/05/;
         $columns[0] =~ s/Jun/06/;
         $columns[0] =~ s/Jul/07/;
         $columns[0] =~ s/Aug/08/;
         $columns[0] =~ s/Sep/09/;
         $columns[0] =~ s/Oct/10/;
         $columns[0] =~ s/Nov/11/;
         $columns[0] =~ s/Dec/12/;

         my @date = split(/-/, $columns[0]);
         $columns[0] = $date[2] . "-" . $date[1] . "-" .
sprintf("%02d", $date[0]);
         $insert = qq{ INSERT INTO
fi.eod(fi_id,fi_id_whg,market_id,market_id_whg,eod_day,o,h,l,c,vo)
                                       VALUES($fi_id, $fi_id_whg,
$market_id, $market_id_whg, $columns[0],
                                              $columns[1], $columns[2],
$columns[3], $columns[4], $columns[5]);  };
         elog(NOTICE, "$insert");
         #this occours the crash
         spi_exec_query( $insert );
      } #end if
   }#end each line
   1;
$$ LANGUAGE plperlu;


В списке pgsql-general по дате отправления:

Предыдущее
От: Magnus Hagander
Дата:
Сообщение: Re: [HACKERS] Checkpoint request failed on version 8.2.1.
Следующее
От: "richard lavoie"
Дата:
Сообщение: Elegant copy of a row using PL