Search Postgresql Archives

Re: DDL commands take forever

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



El mar, 29-12-2009 a las 14:48 -0300, Leonardo M. Ramé escribió:
> El mar, 29-12-2009 a las 11:20 -0500, Bill Moran escribió:
> > In response to "Leonardo M." Ramé <l.rame@xxxxxxxxxxx>:
> > 
> > > Hi, I need to create a trigger on a table used by our sofware, the
> > > problem is, when I issue a "create trigger...." on this table, it takes
> > > forever. It doesn't matter if I use pgAdmin, or psql.
> > > 
> > > The only way to do it is by disconnecting all the instances of the
> > > program from the database, execute the DDL command, and reconnect the
> > > program again.
> > > 
> > > What can be causing this behavior? any workaround?.
> > 
> > Most likely those programs have locks out that are causing the DDL command
> > to have to wait until the locks clear.
> > 
> > Disconnecting everyone is the quick workaround.
> > 
> > The real fix is to ensure that your application doesn't hold onto DB locks
> > longer than is needed, which won't guarantee that everything moves fast,
> > but will help immensely.  Often this is caused by the application holding
> > transactions open for long periods of time, which is a bad idea anyway
> > since it interferes with vacuum and other maintenance operations.
> > 
> > You can look at the pg_locks table to see what locks are out, to help you
> > diagnose what apps are holding locks open.
> > 
> > -- 
> > Bill Moran
> > http://www.potentialtech.com
> > http://people.collaborativefusion.com/~wmoran/
> > 
> 
> Thanks Bill, I'll take a look at my app. I hope the problem is on my
> side, the worst case would be the cause of the problem is on the
> connection component I'm using to connect to Postgres (the app is
> written in Delphi with Zeos Lib).
> 
> 
> -- 
> Leonardo M. Ramé
> Griensu S.A. - Medical IT Córdoba
> Tel.: 0351-4247979
> 
> 

Well, I'm trying to debug the problem, and found that when I do a simple
"select * from table" from my app, then go to pgAdmin, and do "select *
from pg_locks", it shows many locks (23 to be exact).

On the other hand, if I do the same query with pgAdmin on one machine,
and the "select * from pg_locks" from another machine, there are only
three locks.

Is there a way to tell Postgres how to handle locks at connection time?,
maybe pgAdmin is using a *special* parameter to connect?.


-- 
Leonardo M. Ramé
Griensu S.A. - Medical IT Córdoba
Tel.: 0351-4247979


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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux