Оператор слияния Oracle не многопоточный - PullRequest
3 голосов
/ 12 января 2010

Просто ищу подтверждение здесь. Мы пытаемся использовать оператор слияния для двух таблиц, вызываемых из C # через хранимые процессы. вызовы производятся из отдельных потоков и / или процессов. Мы получаем уникальные ключевые нарушения в двух столбцах, которые также составляют оператор on.

Наша теория заключается в том, что операторы выполняются одновременно с одними и теми же данными, а оператор слияния не является многопоточным безопасным. Кто-нибудь еще имел или видел эту проблему раньше?

Есть мысли по поводу решения этой проблемы?

Dan

1 Ответ

4 голосов
/ 12 января 2010

Oracle не имеет ничего общего с потоками и процессами на вызывающей стороне.

Вместо этого он реализует собственные механизмы блокировки, которые предотвращают одновременное обновление двух логических сеансов (которые могут инициироваться или не инициироваться различными потоками, процессами и даже машинами).

Ключевые нарушения, которые вы видите, являются результатом (вероятно, правильной) работы этих механизмов.

Если вы разместите запрос, который вы выполняете, я, вероятно, смогу дать более конкретный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...