On Wed, Jul 13, 2011 at 9:47 PM, Tony Wang <wwwjfy@gmail.com> wrote: > On Thu, Jul 14, 2011 at 10:35, John R Pierce <pierce@hogranch.com> 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. > In the postgresql documentation > (http://www.postgresql.org/docs/8.4/static/explicit-locking.html), it's said > about the Exclusive "This lock mode is not automatically acquired on user > tables by any PostgreSQL command."
You need to figure out what part of your app, or maybe a rogue developer etc is throwing an exclusive lock.