Каковы проблемы блокировки, блокировки в финансовых операциях? - PullRequest
4 голосов

Подзапрос SQL - когда следует использовать «with (nolock)»

В одном местном финансовом учреждении их программисты осудили меня за то, что они выразили им свое мнение о том, что (одержимость их программистов) (b) проблемы с блокировкой в ​​их базах данных MS SQL Server 2005 не имели для меня особого смысла.

Каковы возможные проблемы с возможной блокировкой, блокировкой, взаимоблокировкой, если финансовые операции никогда не обновляются, удаляются и даже некорректные операции (часть «транзакций»?) Исправляются путем вставки (добавления) новых корректирующих записей в базы данных?
Какой термин для этого на английском языке? На других языках это называется сторно, сторноедом (?) Операций / записей.

Итак, насколько я понимаю, «транзакции» действительно никогда не откатываются, и никогда не бывает неправильных / несуществующих записей, только неактуализированных.

Обновление:
Я гуглил по сторно и не смог найти никаких результатов с его определением на английском или его использованием в английских текстах.
Я нашел определение для сторно (латинскими буквами) только на итальянском языке.
Но бухгалтерский учет был изобретен в Италии, и многие итальянские бухгалтерские термины используются на других языках, например, в русском бухгалтерском учете (банковском деле).
Я также подумал, что это международно признанная практика учета финансовых операций, не так ли?

Update2:
S.Lott дал мне ссылку на То, как транзакции в приложении ERP меняются местами, - большое дело! , сообщающее, что storn - это транзакция сторнирования.

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

Значит, сторно - это не распространенная практика финансового учета в мире?

В любом случае, Я бы хотел избежать обсуждения деталей / методов / терминов бухгалтерского учета и ограничить вопрос контекстом, если записи никогда не удаляются или не обновляются.

Каковы возможные проблемы с блокировкой, блокировкой, взаимоблокировкой, производительностью в этом контексте?

1 Ответ

2 голосов
/ 01 октября 2010

«Операции Storno» или «Сторнирование транзакций» суммируются. Во многих местах.

http://richardatopenbravo.blogspot.com/2010/02/way-that-transactions-are-reversed-in.html

http://help.sap.com/saphelp_46b/helpdata/en/d2/6f921f415e11d182b10000e829fbfe/content.htm

http://forum.wordreference.com/showthread.php?t=1875166

Не связывайте внедрение программного обеспечения с учетом. Разумная реализация может обойтись с минимальной блокировкой. Это ничего не значит, однако. Возможно, вы заработали упрек, потому что программное обеспечение (а) плохо спроектировано и (б) требует тщательной блокировки из-за плохого дизайна.

Каковы возможные проблемы ...?

Поскольку мы не знаем, насколько хорошо или плохо написано программное обеспечение, невозможно догадаться. Они могут знать что-то об их системе, чего вы не знали.

Простая система транзакций должна быть простой в реализации. Действительно, должно быть тривиальным.

Пара таблиц "только для вставки" может по-прежнему сталкиваться с тупиками, если во время вставок используется блокировка на уровне страницы.

Таблица A, стр. 1 содержит вставку в транзакции X.

Таблица B, стр. 2 содержит вставку в транзакции Y.

Таблица B, стр. 2 содержит вставку в транзакции X.

Таблица A, стр. 1 содержит вставку в транзакции Y.

Единственный способ избежать взаимоблокировок - это использовать всю систему в одной таблице. Или все транзакции ограничены одной таблицей. Или используйте одну блокировку всей базы данных.

Если у вас есть операции с несколькими таблицами (и блокировка на уровне страницы), у вас все равно будут потенциальные взаимоблокировки даже с операциями только вставки. Ясно, что это редко, но все же возможно.

...