Я думаю, что это хорошо в некоторых обстоятельствах, если вы принимаете последствия, и у вас нет других вариантов.
Что касается других вариантов, я бы подтолкнул людей к использованию Read Committed Snapshot Isolation (RCSI) для новых приложений или SNAPSHOT ISOLATION (SI) для более старых приложений, где вы не можете легко протестировать всю базу кода для условий гонки с RCSI.
Тем не менее, они могут не подходить. Возможно, вам придется потратить дополнительное время, любя и заботясь о базе данных tempdb, и следя за тем, чтобы никто не оставлял открытую транзакцию, которая приводит к росту хранилища версий (и базы данных tempdb) и заполнению диска.
Если у вас нет администратора базы данных или кого-либо, чья работа заключается в мониторинге и управлении вашим SQL Server, эти варианты могут быть опасными. В целом, не все имеют полный контроль над кодом, отправляемым на их сервер, где они могут изменить строку подключения или код, чтобы запросить SI для проблемных запросов.
Кроме того, у большинства людей нет проблем с блокировкой всего приложения . У них проблемы с такими вещами, как отчетность по данным OLTP. Если вы можете согласиться с компромиссами NOLOCK / RU в обмен на те отчеты, которые не были заблокированы авторами, сделайте это.
Просто убедитесь, что вы понимаете, что это значит. Это не означает, что ваш запрос не принимает никаких блокировок, это означает, что он не учитывает блокировки, снятые другими запросами.
И, конечно, если ваша проблема заключается в блокировке записи / записи, единственная опция, которая поможет, это SI, но потребовалось бы невероятное количество работы разработчика, чтобы правильно реализовать ее с обработкой ошибок и т. Д.