Re: Need some help in postgres locking mechanism

From: Vick Khera <vivek(at)khera(dot)org>
To: santhosh kumar <kurasanthoshkumar(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Need some help in postgres locking mechanism
Date: 2014-04-08 13:27:36
Message-ID: CALd+dcdpheucqGiRgh9sd5zO1vieMRJ9MAWBs7qXoD9B5RqMHg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Problem 1: how (and why) are you locking rows in table Y?

Problem 2: you cannot have a second process skip over locked rows. It
sounds to me like a job queue... what you want to do is make it work
*really* fast to mark the job as taken and commit that work so the
locks are released. Then go do the work on it. You do not want to hold
the lock the entire time the worker is running. You will likely want
another process somewhere that looks for abandoned jobs that are
started but not completed and have no worker actively working on them.

On Thu, Apr 3, 2014 at 3:19 PM, santhosh kumar
<kurasanthoshkumar(at)gmail(dot)com> wrote:
> Hi
> I have two problems to discuss.an you please guide me how to proceed on
> this.
> problem 1:
> I have table X('a' is prmiary key) and table Y('b' is primary key).
> Table Y has ''a''(X primary key) as foreign key.I have one job which runs
> once in one hour.I want to lock the rows in table Y.but this will also lock
> table X rows to avoid concurrent actions.My table X is used by other jobs as
> well for updation.
> The solution what I thought is implement KEY SHARE on 'a' column in table
> Y.That will help others jobs to update the corresponding rows in table X
> without any issue.
>
> My doubt is how to keep key share lock on "a" column in table Y.by default
> lock is on column 'b' which is primary key of table Y. My table X is so
> huge.I dont want any other locks on it.
> we are using postgres 9.2.
>
> one more doubt:If I implement key share lock on 'a' column,will the default
> locks on table X and table Y removed or not?
>
> PLEASE PROVIDE SYNTAX AS WELL
>
> problem2:
> This is a different issue.I have a table Q('w' is primary key).When a job
> runs ,i want to lock some rows so that the other parallel job wont be
> considering this row.
>
> what is the simple and best lock I can implement on these rows?I want with
> NOWAIT option.
>
> kindly give solutions to above issues.I would be greatful for that.
>
>
>
> Thanks
> K.Santhosh

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Vick Khera 2014-04-08 13:44:15 Re: Linux vs FreeBSD
Previous Message Rob Emery 2014-04-08 12:10:11 Synchronous Replication & replay_location