On Thu, Jun 25, 2015 at 04:02:33PM +0000, BRUSSER Michael wrote:
> Some time ago we upgraded from v. 8.4.4 to 9.4.0 and we are seeing errors in 
> some regression tests.
> 
> LOCATION:  exec_simple_query, postgres.c:887
> ERROR:  40001: could not serialize access due to read/write dependencies 
> among transactions

Would you be so kind as to send along a way to reproduce the problem
you are seeing, ideally a minimal one?

> The database at this point is likely to have a barrage of read and write ops 
> against few tables.
> I understand that using serializable transaction we probably should be ready 
> to retry,

Yes

> but it would be helpful to understand why we did not see so many errors in 
> the past.

Changing the transaction isolation level, which was mislabeled
"serializable" in 8.4 but was actually snapshot isolation, can produce
differences.

https://en.wikipedia.org/wiki/Snapshot_isolation

>   Did something changed from 8.4.4 to 9.4.0?

Yes.  9.1 introduced SSI, which added serialization checks to the
snapshot isolation that existed before.

https://wiki.postgresql.org/wiki/SSI

>   Maybe Postgres has more aggressive predicate locking mechanism now?
>   Can it be that because of the small table size it performs sequential scan 
> and locks the entire table?
> 
> Sorry if any of these questions are plain stupid.

Thanks for asking.  These questions are quite reasonable.

Cheers,
David.
-- 
David Fetter <da...@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fet...@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to