metaclass (metaclass) wrote,
metaclass
metaclass

А вот еще Postgresql

Доработал свой кодогенератор с ормами для поддержки Postgresql.

Запускаю тестилку в 1000 потоков (вставка записи и тут же ее вычитывание по PK, каждое в своем коннекте-транзакции) - работает, но изредка дохнет в произвольных местах. То "Backend sent unrecognized response type: m" то "System.Data.DataException: Data Exception." то "System.ObjectDisposedException: Cannot access a closed Stream.", то "could not serialize access due to read/write dependencies among transactions"

Заменил ADO.NET драйвер на новую версию (с 2.0.9 на 2.0.11) - бредовые ошибки пропали, за исключением "could not serialize access due to read/write dependencies among transactions".

Как оно умудряется найти зависимости в независимых вставке и тут же чтении этой записи - для меня пока загадка.
Что характерно, у Firebird я таких проблем что-то не припомню.

PS: Я использую IsolationLevel.Snapshot и вроде, драйвер при этом устанавливает уровень изоляции Serializable, который в PG реализован в виде Serializable Snapshot Isolation и вызывает конфликты с откатом одной из транзакций принудительно.
Уровень изоляции, при котором оно не конфликтует - IsolationLevel.ReadCommited. Все остальные осмысленные - Snapshot и RepeatableRead - вызывают конфликты с откатами.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 23 comments