Thread: Serializable isolation level
I need you expert opinions on the following statement. The primary reason I use serialized transactions is to avoid race conditions. One of postgresql's famed features is the MVCC (multi-version concurrency control) aka serialized transactions, which allows you to avoid using row/table level locks. It's *supposed* to keep things moving much more quickly than locks allow for. Thanks, Steve.
sknipe@tucows.com wrote: > > I need you expert opinions on the following statement. You have four statements here. > The primary reason I use serialized transactions is to avoid race > conditions. Difficult to say why _you_ use them - they certainly can help there. Make sure you read the bit on "true serializability" though. > One of postgresql's famed features is the MVCC > (multi-version concurrency control) aka serialized transactions Umm - no. MVCC underlies how all the transaction levels are implemented, though you could implement them via other methods. > which allows you to avoid using row/table level locks. MVCC is designed to. > It's *supposed* to keep things moving much more > quickly than locks allow for. It allows reads to proceed without waiting for writes (with the understanding that what you read may now be out of date). Does that help at all? -- Richard Huxton Archonet Ltd
Richard Huxton <dev@archonet.com> writes: > sknipe@tucows.com wrote: >> I need you expert opinions on the following statement. > You have four statements here. Also, no one of those statements is a reason for using serializable mode instead of read committed mode, since they all apply to read committed just as well. Real reasons for choosing one over the other have to do with what your application logic looks like and what you are prepared to do to recover from inconsistencies introduced by concurrent updates. I would suggest reading the documentation at http://developer.postgresql.org/docs/postgres/mvcc.html regards, tom lane