From: | Andrew Rawnsley <ronz(at)ravensfield(dot)com> |
---|---|
To: | Postgresql Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: pljava revisited |
Date: | 2003-12-10 19:01:53 |
Message-ID: | 514D5020-2B43-11D8-96E4-000393A47FCC@ravensfield.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Dec 10, 2003, at 1:51 PM, Andrew Dunstan wrote:
> Thomas Hallgren wrote:
>
>> The JVM will be started on-demand.
>> Although I realize that one JVM per connection will consume a fair
>> amount of
>> resources, I still think it is the best solution. The description of
>> this
>> system must of course make it very clear that this is what happens and
>> ultimately provide the means of tuning the JVM's as much as possible.
>>
>> I advocate this solution because I think that the people that has the
>> primary interest of a pl/java will be those who write enterprise
>> systems
>> using Java. J2EE systems are always equipped with connection pools.
>>
>
> Yes, but as was pointed out even if I use connection pooling I would
> rather not have, say, 25 JVMs loaded if I can help it.
>
Its also a bit of a solution by circumstance, rather that a solution by
design.
>>
>> But, I'm of course open for other alternatives. Let's say that
>> there's a JVM
>> with a thread-pool that the Postgress sessions will connect to using
>> some
>> kind of RPC. This implies that each call will have an overhead of at
>> least 2
>> OS context switches. Compared to in-process calls, this will severely
>> crippel the performance. How do you suggest that we circumvent this
>> problem?
>>
My comments here are pretty off the cuff. You've thought about this far
more than I have.
>
>
> Context switches are not likely to be more expensive that loading an
> extra JVM, I suspect. Depending on your OS/hw they can be incredibly
> cheap, in fact.
>
>>
>> Antother problem is that we will immeditately loose the ability to
>> use the
>> "current connection" provided by the SPI interfaces. We can of course
>> establish a back-channel to the original process but that will incure
>> even
>> more performance hits. A third alternative is to establish brand new
>> connections in the remote JVM. Problem then is to propagate the
>> transaction
>> context correctly. Albeit solvable, the performance using distributed
>> transactions will be much worse than in-process. How do we solve this?
>>
>
> We are theorising ahead of data, somewhat. My suggestion would be to
> continue in the direction you are going, and later, when you can,
> stress test it. Ideally, if you then need to move to a shared JVM this
> would be transparent to upper levels of the code.
>
Agreed - sounds like you've done a fair amount of ground work. I at
least am interested in where you're going with it.
>>
>> C++ or C is not a big issue. I might rewrite it into pure C. The main
>> reason
>> for C++ is to be able to use objects with virtual methods. I know how
>> to do
>> that in C too but I don't quite agree that its "just as clean" :-)
>>
>
> Maybe not, but it's what is used in the core Pg distribution. Go with
> the flow :-)
>
> cheers
>
> andrew
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>
--------------------
Andrew Rawnsley
President
The Ravensfield Digital Resource Group, Ltd.
(740) 587-0114
www.ravensfield.com
From | Date | Subject | |
---|---|---|---|
Next Message | Neil Conway | 2003-12-10 19:15:35 | Re: Solaris Performance (Again) |
Previous Message | Andrew Dunstan | 2003-12-10 18:51:42 | Re: pljava revisited |