Насколько мне известно, единственная разница - это объем эффектов, как сказал Стромми. Подсказка NOLOCK для таблицы и READ UNCOMMITTED на сеансе.
Что касается проблем, которые могут возникнуть, все дело в последовательности. Если вы заботитесь, то имейте в виду, что вы можете получить так называемое грязное чтение, которое может повлиять на другие данные, обрабатываемые на неверной информации.
Я лично не думаю, что у меня возникли какие-либо проблемы, но это может быть больше из-за того, как я использую nolock. Вы должны знать, что есть сценарии, в которых его можно будет использовать. Сценарии, в которых вы в основном добавляете новые данные в таблицу, но у вас есть другой процесс, который проверяет наличие сценария данных. Вероятно, это будет нормально, так как основной поток не включает возврат и обновление строк во время чтения.
Также я считаю, что в наши дни вам следует изучить Multi-version Concurrency Control. Я считаю, что они добавили его в 2005 году, и он помогает авторам не блокировать читателей, предоставляя читателям моментальный снимок базы данных для использования. Я добавлю ссылку и оставлю читателю дальнейшие исследования:
MVCC
Уровни изоляции базы данных
REPEATABLE READ
Вместо этого подумайте,SERIALIZABLE
если вас не волнуют фантомные данные.SERIALIZABLE
ДЕЙСТВИТЕЛЬНО ограничивает и почти никогда не должен использоваться (за исключением, например, некоторых важных финансовых приложений).