Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: (OT) perl, memory and mysql

by rnahi (Curate)
on Feb 10, 2006 at 16:30 UTC ( #529404=note: print w/replies, xml ) Need Help??

in reply to (OT) perl, memory and mysql

Of course you are running out of memory. Your query is generating five cartesian products!

If you don't set a join clause for each table, your query will be producing a huge number of rows. And this would slurp up all your available resources, no matter which DBMS you are using.

For example, if each table had 50 rows, then your query would generate 15,625,000,000 (fifteen billion rows).
With 100 rows per table, you'd get 1,000,000,000,000 rows (one thousand billion rows!). You get the idea.

Go get a SQL tutorial before continuing any further.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://529404]
[choroba]: but undef %hash and %hash = () both work, too, but the first one keeps the memory allocated, while the latter makes it available for other parts of the program.
[choroba]: iirc
[perldigious]: karlgoethebier: Well it is a pretty old and complicated (for me) bit of code I wrote (poorly by my current standards), so I'm expecting everything to break when I add the scoping and find out what else is undesireably scope changed. :-)
[perldigious]: Ah, thanks choroba, that sort of thing was precisely what I was wondering when I asked.
[perldigious]: I didn't want to tie up memory unecessarily basically, I wanted to "delete" it specifically to free it up, and wasn't sure I was even accomplishing that.
[stevieb]: perldigious You should start by writing some unit tests. That'll ensure current functionality doesn't break with changes.
[choroba]: unit tests++

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2017-07-21 19:55 GMT
Find Nodes?
    Voting Booth?
    I came, I saw, I ...

    Results (335 votes). Check out past polls.