From: | Atri Sharma <atri(dot)jiit(at)gmail(dot)com> |
---|---|
To: | Bruce Momjian <bruce(at)momjian(dot)us> |
Cc: | Merlin Moncure <mmoncure(at)gmail(dot)com>, Seref Arikan <serefarikan(at)kurumsalteknoloji(dot)com>, PG-General Mailing List <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: What happens if I create new threads from within a postgresql function? |
Date: | 2013-02-18 17:55:44 |
Message-ID: | C6194EB5-E1F1-4959-AF7B-EFD973CD87D8@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Sent from my iPad
On 18-Feb-2013, at 22:58, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
> On Mon, Feb 18, 2013 at 10:46:39PM +0530, Atri Sharma wrote:
>>
>>
>> Sent from my iPad
>>
>> On 18-Feb-2013, at 22:38, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
>>
>>> On Mon, Feb 18, 2013 at 10:33:26PM +0530, Atri Sharma wrote:
>>>>>> While your threads are executing, your query can't be cancelled --
>>>>>> only a hard kill will take the database down. If you're ok with that
>>>>>> risk, then go for it. If you're not, then I'd thinking about
>>>>>> sendinging the bytea through a protocol to a threaded processing
>>>>>> server running outside of the database. More work and slower
>>>>>> (protocol overhead), but much more robust.
>>>>>
>>>>> You can see the approach of not calling any PG-specific routines from
>>>>> theads here:
>>>>>
>>>>> http://wiki.postgresql.org/wiki/Parallel_Query_Execution#Approaches
>>>>
>>>>
>>>> Is there any way to locally synchronise the threads in my code,and
>>>> send the requests to the PostgreSQL backend one at a time? Like a waiting
>>>> queue in my code?
>>>
>>> Is this from the client code? That is easy from libpq using
>>> asynchronous queries.
>>>
>>>
>>
>> Actually, I haven't yet faced any such scenario.I was just thinking of all the possibilities that can happen in this case.Hehehe
>>
>> If we want to do this from a function in PostgreSQL itself, would a local synchronisation mechanism work?
>
> So your server-side function wants to start a new backend --- yeah, that
> works. /contrib/dblink does exactly that. Calling it from threads
> should have the same limitations you would normally have from libpq.
>
>
Got that,thanks a ton!
I will see the dblink code.
BTW, is there no way to introduce a general synchronisation mechanism for server side code? A kind of construct which would be the standard way to manage synchronisation ? I was thinking of something on the lines of a monitor.
Atri
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2013-02-18 18:09:42 | Re: What happens if I create new threads from within a postgresql function? |
Previous Message | Bruce Momjian | 2013-02-18 17:28:43 | Re: What happens if I create new threads from within a postgresql function? |