pg_dump locks a table on dumping ... ?

Started by Marc G. Fournieralmost 22 years ago3 messages
#1Marc G. Fournier
scrappy@postgresql.org

'k, just had someone tell me that they believed that a pg_dump will lock a
table while the dump is happening ... my first thought/response was that
this would defeat the point of MVCC, no? And would make for a terrible
backup procedure on a very large database, since you'd just have made your
database useless for the duration ...

Can someone confirm/deny that the lock happens?

----
Marc G. Fournier Hub.Org Networking Services (http://www.hub.org)
Email: scrappy@hub.org Yahoo!: yscrappy ICQ: 7615664

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Marc G. Fournier (#1)
Re: pg_dump locks a table on dumping ... ?

"Marc G. Fournier" <scrappy@postgresql.org> writes:

'k, just had someone tell me that they believed that a pg_dump will lock a
table while the dump is happening ... my first thought/response was that
this would defeat the point of MVCC, no? And would make for a terrible
backup procedure on a very large database, since you'd just have made your
database useless for the duration ...

Can someone confirm/deny that the lock happens?

pg_dump takes a reader's lock (AccessShareLock). This does not prevent
reads or writes of the table. It does prevent dropping the table,
making schema alterations to it (such as column add/drop), or anything
else that wants an exclusive lock. I think that VACUUM FULL is the only
thing particularly likely to cause a conflict in a running database.

regards, tom lane

#3Marc G. Fournier
scrappy@postgresql.org
In reply to: Tom Lane (#2)
Re: pg_dump locks a table on dumping ... ?

On Tue, 23 Mar 2004, Tom Lane wrote:

"Marc G. Fournier" <scrappy@postgresql.org> writes:

'k, just had someone tell me that they believed that a pg_dump will lock a
table while the dump is happening ... my first thought/response was that
this would defeat the point of MVCC, no? And would make for a terrible
backup procedure on a very large database, since you'd just have made your
database useless for the duration ...

Can someone confirm/deny that the lock happens?

pg_dump takes a reader's lock (AccessShareLock). This does not prevent
reads or writes of the table. It does prevent dropping the table,
making schema alterations to it (such as column add/drop), or anything
else that wants an exclusive lock. I think that VACUUM FULL is the only
thing particularly likely to cause a conflict in a running database.

Perfect, that makes sense ... thanks :)

----
Marc G. Fournier Hub.Org Networking Services (http://www.hub.org)
Email: scrappy@hub.org Yahoo!: yscrappy ICQ: 7615664