in reply to DBI + 'SELECT *' - Memory Use Galore?

I don't see anything wrong with what you are doing, maybe the DBD you are using is leaking or is stupidly written to suck up all of the rows from the select statement (or maybe the db demands that it suck in all the rows, you don't specify what database you are using), but I kind of doubt it.

You're sure there's nothing inside the loop eating memory? Does this help any?:PERL memory leak?

  • Comment on Re: DBI + 'SELECT *' - Memory Use Galore?

Replies are listed 'Best First'.
Re^2: DBI + 'SELECT *' - Memory Use Galore?
by tadman (Prior) on Feb 17, 2001 at 03:06 UTC
    I'm just using DBD::mysql, which should be the best thing for the job. Further, the program doesn't even make it into the loop, as the 'print' diagnostic I have in the code doesn't report back. Instead, a HUGE amount of data is sent from the MySQL server over TCP/IP to the Perl process, which happily gobbles it up into RAM.

    ichimunki's idea of the brackets for the my declarations was interesting, but produced no effect. I even removed the error checking from $s->execute() and there was no change.

    The only solution (read: hack) that I came up with is to limit the query to managable chunks:       SELECT * FROM table LIMIT ?,? Then iterate through the entire table in LIMITed chunks. This is not the fix I was hoping for.