Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: transactions getting slon in councurrent environment



Tigran Mkrtchyan wrote:
Does it mean that I have to commit after each select statement?

Here what the manual says:

------------
Description

COMMIT commits the current transaction. All changes made by the transaction become visible to others and are guaranteed to be durable if a crash occurs.
-----------

Does select produces some changes?
No, but with autocommit off, you are effectively doing
START TRANSACTION;
SELECT * from x;

and then leaving the transaction open. The way MVCC works is to write new data into the heap when you insert/update. It doesn't replace the data. As this select transaction is open, it may still need to read data from before the update. So VACUUM can't clean that data out of the table when it runs and the data still needs to be available to that transaction.

So basically if you have autocommit off, the transaction stays open. You can either set autocommit on, or you can COMMIT the transaction.

Russell.


Regards,
    Tigran.

Tom Lane wrote:
Tigran Mkrtchyan <tigran(dot)mkrtchyan(at)desy(dot)de> writes:
I got a incorrect or unexpected behavior in concurrent environment.

This is not a bug, nor even surprising.  Since you haven't committed
the second transaction, there are a growing number of
dead-but-not-recyclable versions of the updated row.  The active client
has to check each of these versions during its primary key uniqueness
check during each update.

            regards, tom lane






Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group