From: | Eyal Wilde <eyal(at)impactsoft(dot)co(dot)il> |
---|---|
To: | pgsql-performance(at)postgresql(dot)org |
Subject: | scale up (postgresql vs mssql) |
Date: | 2012-04-11 22:11:45 |
Message-ID: | CAMiEbcj+6ViLiAX0C3+VzhVGt5ZedMh8KCE1JTgXgEVUq+GeNw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
hi,
i had a stored procedure in ms-sql server. this stored procedure gets a
parameter (account-id), dose about 20 queries, fills some temporary tables,
and finally, returns a few result-sets. this stored procedure converted to
stored function in postgresql (9.1). the result-sets are being returned
using refcursors. this stored function is logically, almost identical to
the ms-sql stored procedure. a LOT of work had been done to make
postgresql getting close to ms-sql speed (preparing temp-tables in advance,
using "analyze" in special places inside the stored function in order to
hint the optimizer that the temp-tables have very few records, thus
eliminating unnecessary and expansive hash-join, and a lot more..). after
all that, the stored function is running in a reasonable speed (normally
~60 milliseconds).
now, i run a test that simulates 20 simultaneous clients, asking for
"account-id" randomly. once a client get a result, it immediately asks for
another one. the test last 5 seconds. i use a connection pool (with Tomcat
web-server). the pool is automatically increased to ~20 connections (as
expected). the result is postgresql dose ~60 "account-id"s, whereas ms-sql
dose ~330 "account-id"s. postgresql shows that each "account-id" took about
400-1000 msec ,which is so much slower than the ~60 msec of a single
execution.
in a single execution postgresql may be less the twice slower than ms-sql,
but in 20 simultaneous clients, it's about 6 times worse. why is that?
the hardware is one 4-core xeon. 8GB of ram. the database size is just a
few GB's. centos-6.2.
do you think the fact that postgresql use a process per connection (instead
of multi-threading) is inherently a weakness of postgrsql, regarding
scale-up?
would it be better to limit the number of connections to something like 4,
so that executions don't interrupt each other?
thanks in advance for any help!
From | Date | Subject | |
---|---|---|---|
Next Message | Steve Crawford | 2012-04-12 15:47:58 | Re: Linux machine aggressively clearing cache |
Previous Message | Merlin Moncure | 2012-04-10 13:21:56 | Re: about multiprocessingmassdata |