Я не пытаюсь начать обсуждение типа Windows / Mac.
Лично мне не нужно убеждать, что NOLOCK
это плохая идея как рефлексивная практика. Кажется, когда вы развиваете, все должно быть целенаправленным, а не реакционным (/ аминь)
Итак ... ответственный программист настаивает NOLOCK
на этом. Рекомендуется со всеми специальными запросами и при каждом запросе продукции. Я не видел хранимой процедуры без подсказок nolock на каждой таблице.
Не хочу быть тем парнем, который приходит и говорит всем, что основополагающее убеждение - это неправильно, если что-то не подкрепит.
Просто глядя на сессии комментариев под различными сообщениями в блоге, отправка ссылки может быть недостаточно. Давние убеждения и т. Д. Некоторые люди не уверены, что это проблема. См. Раздел «Комментарии» под каждым прочитанным мною постом в блоге.
В настоящее время некоторые другие администраторы борются с загадочным тупиком. Как определить, являются ли NOLOCK источником?
Было предложено смотреть на XML по трассировкам и т. Д., Но это не будет явно указывать на то, что проблемы вызваны взаимоблокировками, не так ли? Я никогда не видел сообщений об ошибках, которые прямо вперед. это правда?
Как еще можно зацепить эти тупики?
DDL заявления вроде CREATE
бы были бы подсказкой. Есть ли какие-либо выходные данные, на которые я мог бы указать, или какие-то данные, которые я мог бы найти, которые помогли бы подтвердить мою теорию, прежде чем я поднял тревогу?
Или я запускаю флаги трассировки или расширенные события, чтобы определить, что происходит, когда возникают взаимоблокировки, а затем выводится из операторов DDL?
Если взглянуть на все возможные способы, которыми данные могут быть испорчены, намеками на нолок, то, похоже, трудно решительно определить ситуацию.
источник