SQL Server NOLOCK с JOIN, массовая загрузка

Ниже приведен сценарий, который у меня есть: у меня есть хранимая процедура, которая возвращает данные путем объединения четырех таблиц. Дважды в середине дня происходит массовая загрузка в одну из четырех таблиц. Нагрузка продолжается 10-15 минут. Я не хочу, чтобы пользовательский интерфейс вызывал эту хранимую процедуру для замораживания / блокировки / замедления в течение этого 10-15-минутного окна. Мне не нужно показывать грязные / незафиксированные данные из приведенных выше таблиц. Ниже приведены мои запросы:

  1. Нужно ли использовать NOLOCK только для таблицы, которая загружается в течение дня. ИЛИ NOLOCK необходимо добавить во все 4 таблицы соединения. Например, для

    SELECT * FROM Table1 T1 WITH (NOLOCK) --this is the table that will be bulk-loaded twice during the day INNER JOIN Table2 T2 WITH (NOLOCK) INNER JOIN Table3 T3 WITH (NOLOCK) INNER JOIN Table4 T4 WITH (NOLOCK) 

    ИЛИ это достаточно

     SELECT * FROM Table1 T1 WITH (NOLOCK) --this is the table that will be bulk-loaded twice during the day INNER JOIN Table2 T2 INNER JOIN Table3 T3 INNER JOIN Table4 T4 
  2. Если я добавлю УРОВЕНЬ ИЗОЛЯЦИИ SET TRANSACTION READ UNCOMMITTED в начале процедуры поиска и верну его обратно в READ COMMITTED в конце, будет ли какая-то разница?

благодаря

Викас

  1. Вам нужно только добавить NOLOCK для таблиц, которые будут заблокированы в течение продолжительных периодов времени, поэтому достаточно добавить NOLOCK только в Table1 .
  2. Если вы установите уровень изоляции READ UNCOMMITTED , вам не нужно добавлять NOLOCK вообще, так как он будет автоматически применяться ко всем запрошенным таблицам. Другими словами, вы создадите ситуацию, аналогичную первому примеру в вопросительном элементе 1, где NOLOCK применяется ко всем таблицам, участвующим в SELECT .

Кстати, убедитесь, что вы добавляете условия ON в свои предложения INNER JOIN , потому что, как указано, они недействительны Transact-SQL.

  • Является ли подсказка With (NoLock) опасной в моем случае?
  • с (nolock), (nolock), различиями nolock?
  • Когда вы должны использовать «с (nolock)»
  • Синтаксис WTH (NOLOCK) для подзапроса
  • Получаю ли я прирост производительности с помощью WITH (NOLOCK) в базе данных SQL Server, где включен READ_COMMITTED_SNAPSHOT?
  • Лучшая альтернатива WITH (NOLOCK)?
  • Будет ли подсказка SQL Server NOLOCK возвращать частично написанные строки?
  • Использование NOLOCK на таблице, которая соединяется с собой
  • синтаксис для nolock в sql
  • SQL Server - как установить (nolock) подсказку по умолчанию?
  • Dapper с (nolock)
  • Interesting Posts

    Стратегия запуска тестов в базе данных

    Создать глобальную статическую переменную в SQL Server?

    SELECT … ГДЕ что-то равно с китайскими иероглифами

    Запрос Sql для объединения данных двух таблиц с SUM и порядком по условию

    MSSQL: DISTINCT, который учитывает диапазоны дат

    Ошибка преобразования SQL Server при преобразовании даты и времени из символьной строки

    (с помощью объединения) Я получаю не содержащийся ни в агрегатной функции, ни при ошибке GROUP BY

    Каков наилучший способ настройки SQL Server для 50 разработчиков?

    TSQL Как я могу группировать по литералам?

    SQL Server 2005 находит все столбцы в базе данных для определенного типа данных

    Ошибка сервера Sql, вызванная веб-частью

    Идентификатор с несколькими частями «insert.Id» не может быть связан при создании триггера

    Неверный параметр длины передается функции LEFT или SUBSTRING (SQL Server)

    Структура Entity, создающая отдельную базу данных, соответствующую каждому классу в модели

    SQL Server: как конкатенация строковой константы с датой?

    Давайте будем гением компьютера.