"rafael.faria@linx.com.br" <rafael.faria@linx.com.br> wrote:
[posting quotes as rendered in English by Google translate]
> I'm analyst / developer of a system in python running a bank
> postgres, and our system has approval only to version 8.4, but
> we have clients running smoothly until version 9.0, but any
> up version of this is unusable since in many routines
> system is generated the error below.
>
> Traceback (most recent call last):
> File "class / base.py", line 318, in update
> File "C: \ Python22 \ lib \ site-packages \ lzt \ lztdb.py", line 534, in run
> ProgrammingError: ERROR: could not serialize access due to read / write
> Among dependencies transactions
>
> This error did not occur for smaller versions to 9.1, I noticed that you
> made changes to the question of how the bank works with the question of
> transactions, checked the documentation
> http://www.postgresql.org/docs/9.4/static/transaction-iso.html
As that documentation mentions, the behavior which was available
before 9.1 by choosing either SERIALIZABLE or REPEATABLE READ
remains available under REPEATABLE READ in 9.1 and later.
Some additional practical examples of differences are available on
this Wiki page, which you may want to review before deciding which
isolation level you prefer to use:
https://wiki.postgresql.org/wiki/SSI
For banking applications you might want to pay particular attention
to how you are preventing problems like the one in this example:
https://wiki.postgresql.org/wiki/SSI#Overdraft_Protection
There are certainly ways to handle that without a truly
serializable transaction isolation level, but such issues are
sometimes missed under less strict levels.
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company