Re: Weird problem that enormous locks - Mailing list pgsql-general

From Tony Wang
Subject Re: Weird problem that enormous locks
Date
Msg-id CAH1z_A4sjuTiTLZUspfi8bF-skYKR_b=AxQU5TTRsP0-3qTJyg@mail.gmail.com
Whole thread Raw
In response to Weird problem that enormous locks  (Tony Wang <wwwjfy@gmail.com>)
List pgsql-general
Thanks, I've checked the "for update". No such queries there.

On Thu, Jul 14, 2011 at 15:36, Radoslaw Smogura <rsmogura@softperience.eu> wrote:
Once time I've read 9.x PostgreSQL locks everything before offset, if You execute select for update offset. Do you call such query at least once? It's the way why we think about having 9.x server.

------------------------
Regards,
Radoslaw Smogura
(mobile)

From: Tony Wang
Sent: 14 lipca 2011 07:00
To: John R Pierce
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] Weird problem that enormous locks


On Thu, Jul 14, 2011 at 12:35, John R Pierce <pierce@hogranch.com> wrote:
On 07/13/11 8:47 PM, Tony Wang wrote:
It's a game server, and the queries are updating users' money, as normal. The sql is like "UPDATE player SET money = money + 100 where id = 12345". The locks were RowExclusiveLock for the table "player" and the indexes. The weird thing is there was another ExclusiveLock for the table "player", i.e. "player" got two locks, one RowExclusiveLock and one ExclusiveLock.

that query should be quite fast. is it part of a larger transaction?  is there any possibility of multiple sessions/connections accessing the same player.id?


That's possible, but I think only one row will be locked for a while, but not thousands of locks for an hour. It's rare that thousands of users update the value at once.
 

it would be interesting to identify the process that issued the exclusive lock and determine what query/queries its made.  if its not apparent in pg_stat_activity, perhaps enable logging of all DDL commands, and check the logs.

yeah, I've made the log_statement to "all" now. Previously, it only logged slow queries more than 50ms. I could know something from logs if it happens again (hope not).
 

if there's a lot of active queries (you ahve 800 connections)

   select count(*),current_query from pg_stat_activity group by current_query order by count(*) desc;

that's helpful, thanks.
 

can help you make sense of them.



--
john r pierce                            N 37, W 122
santa cruz ca                         mid-left coast


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


pgsql-general by date:

Previous
From: Duarte Fonseca
Date:
Subject: Re: SerializableSnapshot removed from postgresql 8.4
Next
From: Scott Marlowe
Date:
Subject: Re: Weird problem that enormous locks