metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-04-08 08:34 am

И все таки, про транзакции, Postgresql vs Firebird

http://www.postgresql.org/docs/9.1/static/transaction-iso.html
http://www.ibase.ru/devinfo/ibtrans.htm

Repeatable Read в Postgresql и Snapshot в Firebird почти эквивалентны. За одним исключением: в Postgresql Repeatable Read может вызывать ошибки конфликта транзакций, на что я вчера и наткнулся:
"Applications using this level must be prepared to retry transactions due to serialization failures."
В Firebird такого не наблюдается.

Далее, уровни изоляции, которые выставляют ADO.NET драйвера для дотнетовских констант - тоже отличаются.
У Firebird .NET провайдера IsolationLevel.RepeatableRead и IsolationLevel.Snapshot ссылаются на константу Concurrency (т.е. REPEATABLE READ), а IsolationLevel.Serializable ссылается на Consistency, т.е. SERIALIZABLE.

У NPGSQL провайдера IsolationLevel.RepeatableRead ссылается на REPEATABLE READ, а IsolationLevel.Snapshot и IsolationLevel.Serializable ссылается на SERIALIZABLE.

Такое ощущение, что это осталось с времен до 9.1 версии, где Serializable от Repeatable Read не отличался, судя по документации.

[identity profile] berezovsky.livejournal.com 2013-04-08 10:07 am (UTC)(link)
Интересно, как часто на практике нужно что-то, кроме serializable.