pg_dump locks a table on dumping ... ?
'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
"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
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