отчет в моем приложении запускает запрос, который требует от 5 до 15 секунд (ограничен количеством строк, которые будут возвращены). Запрос состоит из 8 подключений почти ко всем основным таблицам моего приложения (клиенты, продажи, юниты и т. Д.).Блокировка таблицы SQL Server в длинном запросе - решение: NoLock?
Небольшой инструмент показывает мне, что в это время все эти 8 таблиц заблокированы с помощью общей блокировки таблицы. Это означает, что в это время никакая операция обновления не будет выполнена.
Решение от друга состоит в том, чтобы иметь каждое соединение в запросе, которое не является обязательным для получения 100% правильных данных (грязное чтение) с помощью NoLock, поэтому только одна из этих 8 таблиц будет заблокирована полностью. Это хорошее решение? Для отчета, в котором 99% данных поступают из одной таблицы, разблокируйте менее таблицы prio?
Понимаете, я прав? Вы имеете в виду, что в течение 15 секунд, когда выполняется запрос выбора, будет быстрое обновление, например. customeraddress, то половина будет иметь первый адрес, а вторую половину нового? – Kovu
@ Kovu: справа, см. Обновление сообщения. – Quassnoi