Gokulakannan Somasundaram wrote:
Hi,
I had a chance to test one of the real world cases with Oracle and
PostgreSQL. Create a Table with 10 million rows (i worked on a 1GB RAM
machine) both in oracle and Postgresql. Just write a JDBC program for
a 'select *' on that table. With PostgreSQL as backend, java crashes
saying that it has met 'Out Of Memory'. With Oracle it doesn't.
Postgres tried to send all the results back to the client at one
shot, whereas in Oracle it works like a Cursor. Is this issue already
well known among hackers community? If known, why is it designed this
way?
It returns everything because you've asked for it. If you wanted
something that looks like a cursor, PG assumes you'll request a cursor.
As to why, there are two reasons:
1. It's always been that way and changing it now would irritate most of
the existing user-base.
2. Repeat your test with 5,10,50,100 clients all running different big
queries and see which puts a greater load on the server. PG favours
supporting lots of clients by pushing the load onto them.
I also noticed that it doesn't crash with psql, but it takes a
long time to show the first set of records. It takes a long time, even
to quit after i pressed 'q'.
With oracle SQLPlus, it is quite instantaneous.
Again, you're measuring different things. What is the time to the *last*
row?
--
Richard Huxton
Archonet Ltd
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly